React-Native图片上传

时间:2017-12-27 13:19:17

标签: reactjs react-native file-upload

是否可以使用FormData将文件(图像)上传到具有react-native的服务器?试图像这样使用它:

var data = new FormData();
  data.append('file', file);
  console.log(JSON.stringify(data));
  var id = 5;
  fetch('http://192.168.1.104:3000/app/complaint/uploadFile?id='+id,{
    method:'POST',
    body: data,
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'multipart/form-data;',
    },
  });

对于ReactFormData按预期工作,但React-Native无效。

我也尝试过(用于反应 - 工作)

const data = fetch('http://192.168.1.104:3000/app/complaint/uploadFile?id='+id, {
        credentials: "same-origin",
        method:'POST',
        body: dataval,
        timeout: 1000000000,
      });  

但没有任何作用,

back-end server中,我使用

上传
var d = require('domain').create()    
d.run(function safelyUpload () {
        var file=req.file('file').upload({dirname: path.resolve(sails.config.appPath, folder),
        }, function whenDone(err, uploadedFiles) {
          if (err) return res.serverError(err);
          else{
            sails.log.debug('Complaint File data : ' +util.inspect(uploadedFiles, {showHidden: true,depth: null}));
          }
        });
});

还有其他方式

1 个答案:

答案 0 :(得分:1)

以下是使用Fetch API

上传图片的示例
const photo = {
  uri: user.profilePicture,
  type: 'image/jpeg',
  name: 'photo.jpg',
};

const form = new FormData();
form.append("ProfilePicture", photo);

fetch(
  URL,
  {
    body: form,
    method: "PUT",
    headers: {
      'Content-Type': 'multipart/form-data',
      'Authorization': 'Bearer ' + user.token
    }
  }
).then((response) => response.json())
.catch((error) => {
  alert("ERROR " + error)
})
.then((responseData) => {
  alert("Succes "+ responseData)
}).done();

积分https://stackoverflow.com/a/36649457/5315786