如何发送二进制文件?

时间:2019-09-19 00:44:36

标签: javascript reactjs blob expo multipartform-data

因此,以前,我使用ImagePicker Expo以JSON格式发送base64文件... 而且我还需要帮助来清除我的理解。

现在我想像在网络上一样发送它:

  1. 我不知道什么是数据类型,Web上的结果如下:
Content-Disposition: form-data; name="service[image]"; filename="Rectangle 1523.png"
Content-Type: image/png

PNG

���
IHDR�����K���t ;���sRGB�®Îé��TIDATxíÚ?Eð»ÝC;å
âè(ð¢&×`mèHh±°x¾+&4vÄaL.TJ²
!ñ_¨¸Û=çwî<ÎÍ={&ÝÏ<>3Ï3»>¿O&óe
  1. 我不确定,是Blob吗?看起来像随机字符

  2. ,但是base64实际上不是二进制表示吗?

  3. 是二进制字符还是只能发送FORM DATA的那些随机字符?

我确实在文件formData without中发送了数据,这很成功...

所以我认为formData没问题,

现在我使用文件uri发送此类数据:

],
 [
  "service[works_mobilitation]",
  "86",
],
 [
  "service[image]",
   {
    "name": "image.png",
    "type": "image/png",
    "uri": "file:///var/mobile/Containers/Data/Application/3D8A2A3B-1D20-4923-A3C1-EA0FD7EED995/Library/Caches/ExponentExperienceData/%2540dellryuzi%252Fbitubi-sept-2019/ImagePicker/A6AEFA7A-04ED-40B5-8774-83BB2D2BA463.png",
  },
],
],
  1. 我认为它不起作用,因为uri实际上只是一条路径?不是图片吗?

  2. 我对imagepicker Expo不太了解,我可以使用该uri将图像上传到常规服务器(google)吗? file://

我做了多次修改,没有obj ("service[image], uri or base64)

甚至replace.("file://", ""),但没有结果。

最近一次尝试,我想尝试将base64转换为精确的二进制101010,但是我不知道要在React native中做到这一点

我知道了用于网络的方法

function dataURItoBlob(dataURI) {
    var mime = dataURI.split(',')[0].split(':')[1].split(';')[0];
    var binary = atob(dataURI.split(',')[1]);
    var array = [];
    for (var i = 0; i < binary.length; i++) {
       array.push(binary.charCodeAt(i));
    }
    return new Blob([new Uint8Array(array)], {type: mime});
  }
  1. 但不确定new Blob or new Uint8Array似乎无法正常工作,还是我需要第三方图书馆或其他服务?那是什么?

编辑:

所以我探索了一下,那些上面的转换blob在React Native中无法使用,因为RN使用JavascriptCore ...

当我探索rn-fetch-blob时可能是我的答案,但是我必须退出我的expo-native,因为版本0.10.15->必须链接到某些本地版本,而最新的版本0.10.16仅RN为0.60,最新的34世博会仍使用RN 0.59。

我不想弹出......

所以我学到了...,如果我错了,请纠正我(因为我在Google上搜索的所有内容都不会显示构造的二进制文件)

此二进制HDR�����K��是ASCII版本,二进制编码不仅是101010,而且还有很多类型-> base64,ASCII,utf8吗?...也许我需要如何转换{{1 }}或file:///从ImagePicker转换为那些ASCII二进制?使用base64实际上可以实现这一点,但是由于我又无法退出...我别无选择?

但我想确认一下,rn-fetch-blob这是一种什么样的二进制代码??? ASCII吗?究竟是什么斑点?只拆分字符?

0 个答案:

没有答案