【问题标题】:RNFS.uploadFiles only works for raw uploads not for multipart/form-dataRNFS.uploadFiles 仅适用于原始上传,不适用于 multipart/form-data
【发布时间】: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


【解决方案1】:

我变了

 var file = [
            {
                name: newpath,
                filename: newpath,
                filepath: newpath,
                filetype: 'json'
            }
        ];

进入

 var file = [
            {
                name: 'files',
                filename: newpath,
                filepath: newpath,
                filetype: 'json'
            }
        ];

它解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 2019-09-01
    • 2018-04-08
    • 2017-11-18
    • 1970-01-01
    • 2017-11-03
    • 2011-12-29
    相关资源
    最近更新 更多