因此,以前,我使用ImagePicker Expo以JSON格式发送base64文件... 而且我还需要帮助来清除我的理解。
现在我想像在网络上一样发送它:
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
我不确定,是Blob吗?看起来像随机字符
,但是base64实际上不是二进制表示吗?
是二进制字符还是只能发送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",
},
],
],
我认为它不起作用,因为uri实际上只是一条路径?不是图片吗?
我对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});
}
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吗?究竟是什么斑点?只拆分字符?