Node.js 使用reatjs中的请求承诺通过多部分/表单数据上传文件
我正试图在一个输入HTML标记内的reactjs中上传一个文件Node.js 使用reatjs中的请求承诺通过多部分/表单数据上传文件,node.js,reactjs,request-promise,Node.js,Reactjs,Request Promise,我正试图在一个输入HTML标记内的reactjs中上传一个文件 onFileUpload(e)} type=“文件” caption=“File1” />; 那么onFileUpload如下所示: const onFileUpload=(e)=>{ var file=e.target.files[0]; 常数fs=要求(“fs”); var rp=要求(“要求承诺”); 变量选项={ 方法:“张贴”, uri:“http://127.0.0.1:9000/api/get_file/", 表格数
onFileUpload(e)}
type=“文件”
caption=“File1”
/>;
那么onFileUpload如下所示:
const onFileUpload=(e)=>{
var file=e.target.files[0];
常数fs=要求(“fs”);
var rp=要求(“要求承诺”);
变量选项={
方法:“张贴”,
uri:“http://127.0.0.1:9000/api/get_file/",
表格数据:{
//像
姓名:“Jenn”,
//像
文件:{
值:fs.createReadStream(文件),
选项:{
filename:file.name,
contentType:“图像/jpg”,
},
},
},
标题:{
/*“内容类型”:“多部分/表单数据”*/
//是自动设置的
},
};
rp(选项)
.然后(功能(主体){
//发布成功。。。
})
.catch(函数(err){
//发布失败。。。
});
};
但上面的代码给出了以下错误:
TypeError: fs.createReadStream is not a function
有人能给我一些线索来编写正确的代码吗?你只需要创建一个FormData对象就可以了,正如上面Evan Trimboli所说的 看看这个代码示例,使用FormData和fetchAPI发出带有承诺的请求
常数onFileUpload=(e)=>{
var file=e.target.files[0];
var formData=new formData();
formData.append(“name”、“Jenn”);
//HTML文件输入,由用户选择
formData.append(“文件”,file);
//如果要使用任何标题
var myHeaders=newheaders();
var myInit={method:'POST',
标题:myHeaders,
模式:“cors”,
缓存:'默认'};
取('http://127.0.0.1:9000/api/get_file/,myInit)
.然后(功能(响应){
返回response.json();
})
.然后(函数(responseJson){
//发布成功。。。
console.log('上传成功')
})
.catch(函数(err){
//发布失败。。。
console.log('上载失败:',错误)
});
};
您正试图在浏览器中运行节点,这似乎是错误的。您不能在react中写入文件。您需要一个服务器来接收从浏览器上传的文件,并将其存储在任何地方…是的,有没有办法修复上述代码,将post multi-part/formdata请求发送到我在reatcjs中支持的RESTFUL API?请看一下formdata
:建议使用第三方处理此问题,因为从浏览器上载文件时要考虑很多因素和边缘情况。示例:react uploady(我自己的项目)使得只需很少的代码就可以轻松完成。