如何使用react-native将文件上传到服务器

man*_*424 39 react-native

我正在开发一个应用程序,我需要将图像上传到服务器.根据图像,我得到一个我需要渲染的响应?

你能帮我看看如何使用react-native上传图像吗?

Dev*_*v01 44

React Native内置了文件上传功能.

来自React Native代码的示例:

var photo = {
    uri: uriFromCameraRoll,
    type: 'image/jpeg',
    name: 'photo.jpg',
};

var body = new FormData();
body.append('authToken', 'secret');
body.append('photo', photo);
body.append('title', 'A beautiful photo!');

var xhr = new XMLHttpRequest();
xhr.open('POST', serverURL);
xhr.send(body);
Run Code Online (Sandbox Code Playgroud)

  • 我正在做类似的事情使用axios ..服务器获取元数据但不是实际文件.'uriFromCameraRoll'如何将它实际转换为文件作为`send`的一部分? (13认同)
  • 将照片附加到 FormData 时出错。`类型参数'{ uri: string; 类型:字符串;名称:字符串;}' 不可分配给类型为 'string | 的参数 斑点'。` (3认同)
  • @JulianK尝试:var xhr = new XMLHttpRequest(); https://facebook.github.io/react-native/docs/network.html#using-other-networking-libraries (2认同)

小智 15

我的解决方案是使用fetch API和FormData.

在Android上测试过.

const file = {
  uri,             // e.g. 'file:///path/to/file/image123.jpg'
  name,            // e.g. 'image123.jpg',
  type             // e.g. 'image/jpg'
}

const body = new FormData()
body.append('file', file)

fetch(url, {
  method: 'POST',
  body
})
Run Code Online (Sandbox Code Playgroud)

  • 获取没有进展:( (3认同)

Col*_*say 0

有一些潜在的替代方案可供选择。首先,您可以使用 XHR polyfill:

http://facebook.github.io/react-native/docs/network.html

其次,问一个问题:如何在 Obj-C 中上传文件?回答这个问题,然后您就可以实现一个本机模块来从 JavaScript 调用它。

在这个 Github问题上有一些关于所有这些的进一步讨论。