【问题标题】:React-Native image uploadReact-Native 图片上传
【发布时间】:2018-06-08 03:26:16
【问题描述】:

是否可以使用 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}));
          }
        });
});

还有其他方法吗

【问题讨论】:

    标签: reactjs react-native file-upload


    【解决方案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

    【讨论】:

    • 感谢@Pir Shukarullah Shah 它只是通过替换 data.append('file',file); ===> data.append('file', { uri: file.uri, type: 'image/jpeg', name: 'testPhotoName' });它起作用了,我不知道如何,文件对象还包含uri,类型。不过问题解决了
    猜你喜欢
    • 2017-06-29
    • 2018-11-24
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 2019-02-05
    • 2015-08-24
    相关资源
    最近更新 更多