【发布时间】:2019-08-13 11:40:06
【问题描述】:
我正在尝试将 JSON 文件上传到 nodejs 服务器,该服务器使用 multer 作为接收文件的中间件,而 RNFS.uploadFiles 仅适用于原始 Multer,不适用于具有特定字段的 multer,例如(upload.单个('文件')
var file = [
{
name: newpath,
filename: newpath,
filepath: newpath,
filetype: 'json'
}
];
var uploadBegin = (response) => {
var jobId = response.jobId;
console.log('UPLOAD HAS BEGUN! JobId: ' + jobId);
};
var uploadProgress = (response) => {
var percentage = Math.floor((response.totalBytesSent / response.totalBytesExpectedToSend) * 100);
console.log('UPLOAD IS ' + percentage + '% DONE!');
};
RNFS.uploadFiles({
toUrl: uploadUrl,
files: file,
method: 'POST',
headers: {
'Accept': 'application/json',
},
begin: uploadBegin,
progress: uploadProgress
}).promise.then((response) => {
if (response.statusCode == 200) {
console.log('FILES UPLOADED!');
} else {
console.log('SERVER ERROR');
}
})
.catch((err) => {
if (err.description === "cancelled") {
// cancelled by user
}
console.log(err);
});
// }
})
.catch((err) => {
console.log(err.message);
});
多重编码
var upload = multer({
storage: storage,// fileFilter: fileFilter
});
router.post('/GetFiles', upload.single('files'), function (req, res) {
if (req.file) {
res.send({ "Status": true, "Msg": "File Uploaded Successfully" });
}
else {
res.send({ "Status": false, "Msg": "Failed to upload the File", "body": req.body });
}
})
报错
错误:ENOENT:没有这样的文件或目录,在 MessageQueue.__invokeCallback (MessageQueue.js:414) 处的 NativeModules.js:104 处的 createErrorFromErrorData (NativeModules.js:155) 处打开“http://192.168.1.15:3333/SurveyJsonFiles/GetFiles/”: 127 在 MessageQueue.__guard (MessageQueue.js:314) 在 MessageQueue.invokeCallbackAndReturnFlushedQueue (MessageQueue.js:126) 在 debuggerWorker.js:80
【问题讨论】:
-
尝试添加 'Content-Type': 'multipart/form-data', 到标题
-
@opalfire 也试过了,没用
标签: javascript reactjs react-native file-upload multer