php - 使用 angular 和 php api 上传 pdf 文件
问题描述
我想用 angular 和 php api 上传一个 pdf 文件。我一直在尝试使此处提出的解决方案(File Upload In Angular?)与 php api 一起使用。
我测试了代码,但它不起作用。
这是html文件中的代码
<input type="file" (change)="fileChange($event)" placeholder="Upload file" accept=".pdf,.doc,.docx">
这是 ts 代码,我从上面放置的 URL 中的代码对其进行了一些更改,以使其与 HttpClient 一起使用
fileChange(event) {
let fileList: FileList = event.target.files;
if(fileList.length > 0) {
let file: File = fileList[0];
let formData:FormData = new FormData();
formData.append('uploadFile', file, file.name);
let headers = new HttpHeaders();
/** In Angular 5, including the header Content-Type can invalidate your request */
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
// let options = new RequestOptions({ headers: headers });
const options = {
params: new HttpParams(),
headers: headers
};
this.Http.post(`http://localhost/Back/ajouterPublication.php`, formData, options)
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
}
这是php api
<?php
header("Access-Control-Allow-Origin: *");
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(array('status' => false));
exit;
}
$path = 'http://localhost//fichier';
if (isset($_FILES['file'])) {
$generatedName ='abc.pdf';
$filePath = $path.$generatedName;
if (!is_writable($path)) {
echo json_encode(array(
'status' => false,
'msg' => 'Destination directory not writable.'
));
exit;
}
if (move_uploaded_file($_FILES['file']['tmp_name'], $filePath)) {
echo json_encode(array(
'status' => true,
'originalName' => $originalName,
'generatedName' => $generatedName
));
}
}
else {
echo json_encode(
array('status' => false, 'msg' => 'No file uploaded.')
);
exit;
}
?>
我正在使用角度 7.2.1
解决方案
您的 API 请求参数是 uploadFile 并且您正在使用该文件。
在您的 PHP 文件中替换它。
<?php
header("Access-Control-Allow-Origin: *");
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(array('status' => false));
exit;
}
$path=$_SERVER['DOCUMENT_ROOT'] . "/your folder name/";
if (isset($_FILES['uploadFile'])) {
$generatedName ='abc.pdf';
$filePath = $path.$generatedName;
if (!is_writable($path)) {
echo json_encode(array(
'status' => false,
'msg' => 'Destination directory not writable.'
));
exit;
}
if (move_uploaded_file($_FILES['uploadFile']['tmp_name'], $filePath)) {
echo json_encode(array(
'status' => true,
'originalName' => $originalName,
'generatedName' => $generatedName
));
}
}
else {
echo json_encode(
array('status' => false, 'msg' => 'No file uploaded.')
);
exit;
}
?>
推荐阅读
- php - 在 WooCommerce 结帐上为每个产品添加数量输入字段
- foreach - 增强了每个循环优化
- java - 带有开关按钮的 Android ListView - 一次只有一个开关处于活动状态
- pandas - 在 python 中加入 shapefile 并更改其投影坐标系并输出 shapefile
- maven - 如何在 Idea 中加载 kotlin 编译器(kotlin-compiler-embeddable)的源代码?
- reactjs - 如何修复路由以便我可以通过 URL 打开站点?
- java - java.util.ConcurrentModificationException,但我正在迭代一个副本,而不是我正在修改的集合
- python - 这个 Discord Bot 谁给角色的错误在哪里
- actions-on-google - 如何使用 Google Actions 读取 QR 码
- flutter - 在 Flutter 中,如何通过用文本对象替换问题内容来避免崩溃屏幕?