Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用reatjs中的请求承诺通过多部分/表单数据上传文件_Node.js_Reactjs_Request Promise - Fatal编程技术网

Node.js 使用reatjs中的请求承诺通过多部分/表单数据上传文件

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/", 表格数

我正试图在一个输入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/",
表格数据:{
//像
姓名:“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(我自己的项目)使得只需很少的代码就可以轻松完成。