Как отправить файл в двоичном формате? - PullRequest
0 голосов
/ 19 сентября 2019

Итак, ранее я отправлял файл в формате base64 в формате JSON ... с помощью ImagePicker Expo, а также мне нужна помощь для прояснения моего понимания.

Теперь я хотел отправить его как в Интернете:

  1. Я не знаю, что такое тип данных, результат в Интернете выглядит так:
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",
  },
],
],

Я предположил, что это не работает, потому что на самом деле Ури - это только путь?не изображение?

Я не совсем понимаю с imagepicker Expo, могу ли я загрузить изображение на обычный сервер (Google) с этим URI?file://

Я сделал несколько модификаций, без obj, ("service[image], uri or base64)

или даже replace.("file://", ""), но без результата.

theПоследняя попытка, я хотел попытаться преобразовать base64 в точный двоичный код 101010, но я понятия не имел, сделать это в React native

Я получаю метод для web

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 не работает или мне нужна сторонняя библиотека или что-то в этом роде?что это такое?

РЕДАКТИРОВАТЬ:

Итак, я исследую, и эти конвертированные объекты не могут работать в React Native, потому что RN использует JavascriptCore ...

как IИзучение rn-fetch-blob могло бы быть моим ответом, но я должен удалить свою expoact-native, потому что версия 0.10.15 -> должна ссылаться на какой-то нативный, а новейшая версия 0.10.16 предназначена только для RN ​​0.60, чтоновейшая выставка 34 по-прежнему использует RN 0,59.

, и я не хочу выбрасывать ....

, поэтому я должен научиться ... исправьте меня, если я ошибаюсь (потому что всеЯ ищу в Google, не отображать построенный двоичный файл)

этот двоичный файл HDR�����K�� является версией ASCII, и двоичное кодирование не только 101010, но много типа -> base64, ASCII, utf8? ...и, возможно, все, что мне нужно, как преобразовать file:/// или base64 из ImagePicker в эти двоичные файлы ASCII ??чего на самом деле можно добиться с помощью rn-fetch-blob, но, с другой стороны, я не могу выбросить ... У меня нет выбора?

но я хочу подтвердить, ;���sRGB�®Îé��T что это за бинарный файл ???ASCII?а что на самом деле капля?только расщепленный символ?

...