NodeJS 开发人员,我有一种情况,我必须将本地图像从 NodeJS 上传到 PHP 服务器。没有报错,请求成功 200 OK,但是图片没有出现在PHP服务器中。
注意:我是一名 nodeJS 开发人员,在 PHP 方面没有太多经验。
这是想做的事情:
在 NodeJs 中,有一个文件列表,现在我想将这些文件一个一个地附加到 formData 中,之后,我必须将这个表单数据发布到 PHP 服务器,以便将图片上传到 PHP 服务器,
在 PHP 服务器中,在第一行,它从 post 请求接收文件,然后循环将具有支持扩展名的文件一个一个地移动到上传目录,循环完成后它发回一个包含文件数组的响应'下载地址
一切正常,我已经安慰了一切,一切都有完美的价值,甚至 HTTPS POST 请求也成功了,但是 PHP 服务器没有图像,PHP 服务器没有接收请求中的文件,所以看起来多部分数据不起作用NodeJs。
看起来 formData 在 NodeJs 中不能正常工作,因为相同的代码在浏览器中的客户端 JS 上工作。
节点:-
const Axios = require('axios');
const Fs = require('fs');
const FormData = require('form-data');
var formData = new FormData();
//here allFiles is an array of object , each object contains 1 file with details like local file path ,name,size
for (var index = 0; index < allFiles.length; index++) { //Append multiple files to formData.
let currentFile = allFiles[index]
//createReadStream Retyrns fileData
let fileWithInfo = await Fs.createReadStream(currentFile.uri)
formData.append("files[]", fileWithInfo );
}
Axios.post('example.com/upload.php',formData,
{
headers: formData.getHeaders()
})
.then(d => console.log("DONE=>>>> ", d.data))
.catch((f) => console.log('FAILED=>> ', f))
});
PHP 代码:-
<?php
// Count total files
$countfiles = count($_FILES['files']['name']);
// Upload directory
$upload_location = "uploads/";
// To store uploaded files path
$files_arr = array();
// Loop all files
for($index = 0;$index < $countfiles;$index++){
// File name
$filename = $_FILES['files']['name'][$index];
// Get extension
$ext = pathinfo($filename, PATHINFO_EXTENSION);
// Valid image extension
$valid_ext = array("png","jpeg","jpg");
// Check extension
if(in_array($ext, $valid_ext)){
// File path
$path = $upload_location.$filename;
// Upload file
if(move_uploaded_file($_FILES['files']['tmp_name'][$index],$path)){
$files_arr[] = $path;
}
}
}
echo json_encode($files_arr);
die;
海绵宝宝撒
慕标5832272
慕莱坞森
泛舟湖上清波郎朗
慕桂英3389331
相关分类