React Native IOS应用程序无法通过Express + multer服务器上传图像

时间:2017-03-09 22:10:06

标签: express react-native multer

React Native IOS应用程序,想上传图片;从设备。 RN 0.39.2

客户端:

const formData = new FormData()
formData.append('files', file)
formData.append('type', 'image')

fetch(API_HOST+UPLOAD_AVATAR,{
    method:'post',
    headers: {'Content-Type':'multipart/form-data;boundary=6ff46e0b6b5148d984f148b6542e5a5d','Authorization': 'Bearer'+' '+token},
    body: formData
 })
 .then(response=>response.json())
 .then(data=>{
                      //console.log(data)
                      //Alert.alert(data)
  })
  .catch(error=>{
      console.log(error)
  })

服务器:

var multer = require('multer');
var upload = multer();
router.post('/user', ensureAuthenticated, upload.any(), function (req, res) {

    console.log(req.body);
    console.log(req.files);
})

错误:

服务器req.body和req.files为空。

然后我尝试使用RNFetchBlob。

     RNFetchBlob.fetch('POST', API_HOST+UPLOAD_AVATAR, {
           'Content-Type':'multipart/form-data;boundary=6ff46e0b6b5148d984f148b6542e5a5d'
           'Authorization' : 'Bearer'+' '+token
     }, formData)
     .then((resp) => {

     }).catch((err) => {
         // ...
     })

然后错误更改为

NSMutableDictionary无法转换为NSString。

req.body是{},req.files未定义

1 个答案:

答案 0 :(得分:0)

我认为您找到了解决方案,如果可以,可以分享吗? 无论如何,对于RNFetchBlob问题,我曾经得到相同的错误,并且通过将FormData更改为数组来解决。像这样:

const body = [{
  name: 'data',
  data: JSON.stringify(whateverData)
}, {
  name: 'file',
  data: filePath,
}]; 

…

RNFetchBlob.fetch('POST', apiEndpoint, headers, body);

希望有帮助。