【问题标题】:Select document file from phone and upload to server从手机中选择文档文件并上传到服务器
【发布时间】:2017-06-29 15:44:57
【问题描述】:

我正在尝试在按下按钮时从手机存储中获取文档文件,然后将其上传到服务器。但我不知道该使用哪个库以及如何使用。

【问题讨论】:

  • 如果您提出特定问题并展示您迄今为止为解决该问题所做的工作,将会很有帮助。
  • 好吧,我只做了设计。我有 2 个按钮和一个文本视图。第一个按钮是附加的,所以当我按下它时,它会打开手机存储以获取 pdf 文件并在 TextView 中显示文档名称。第二个按钮是 Save 保存该 fthrought post api。

标签: node.js reactjs react-native react-native-fetch-blob


【解决方案1】:

如果你愿意使用 React-native-fetch-blob 或 axios 的库。

如果 React-native-fetch-blob 你可以这样做:

RNFetchBlob.fetch('POST', 'http://www.example.com/upload-form', {
    Authorization : "Bearer access-token",
    otherHeader : "foo",
    'Content-Type' : 'multipart/form-data',
  }, [
    // element with property `filename` will be transformed into `file` in form data
    { name : 'avatar', filename : 'avatar.png', data: binaryDataInBase64},
    // custom content type
    { name : 'avatar-png', filename : 'avatar-png.png', type:'image/png', data: binaryDataInBase64},
    // part file from storage
    { name : 'avatar-foo', filename : 'avatar-foo.png', type:'image/foo', data: RNFetchBlob.wrap(path_to_a_file)},
    // elements without property `filename` will be sent as plain text
    { name : 'name', data : 'user'},
    { name : 'info', data : JSON.stringify({
      mail : 'example@example.com',
      tel : '12345678'
    })},
  ]).then((resp) => {
    // ...
  }).catch((err) => {
    // ...
  })

您将设法从 RNFS 甚至 RNFetch blob 等库中获取文件路径。

https://github.com/wkh237/react-native-fetch-blob

您也可以使用 axios (https://github.com/mzabriskie/axios),但我不会使用它,所以无法进一步帮助您。

两者之间的区别在于它们发送数据的方式。 RNFB 使用 fetch api 下到 native 获取 Base64 编码,axios 工作在 XMLHttpRequests 上,这更有可能在互联网浏览器中使用。

希望对你有帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多