Потратив большую часть недели на борьбу с пакетами React-Native и встроенными реализациями JavaScript, позволяющими пользователям загружать фотографии со своего телефона в базу данных пакетами, я наконец нашел простое собственное решение, которое быстро и легко в использовании. Это решение было получено методом проб и ошибок, через который, я надеюсь, никому больше не придется проходить.
Настроить форму:
Нашим первым шагом в загрузке наших файлов как связки будет создание объекта FormData.
let data = new FormData();
Это позволит нам добавлять и отправлять наши данные как multipart / form-data.
Заполните форму:
Следующее, что нам нужно сделать, это добавить данные, которые мы хотим отправить, в нашу форму. Это эффективно позволяет нам объединить нашу информацию в легко передаваемый составной объект:
this.state.selectedImages.forEach((item, i) => { data.append("doc[]", { uri: item.uri, type: "image/jpeg", name: item.filename || `filename${i}.jpg`, }); });
После того, как мы закончим добавление соответствующих данных в нашу FormData, мы можем продолжить и отправить наши данные, используя собственный метод JavaScript fetch.
Отправить данные:
К счастью для нас, метод fetch в JavaScript позволяет нам отправлять multipart / form-data так же легко, как и любые другие данные.
fetch(`${config.apiBase}/load/${this.props.id}/uploadconfirmation`, { method: "post", headers: { Accept: "application/x-www-form-urlencoded", Authorization: `Bearer ${this.props.user.token}`, }, body: data, }).then(res => res.json()) .then(res => { Alert.alert( "Success", "Bill of Loading Uploaded Successfully!", [{ text: "OK", onPress: () => that.props.close() }], { cancelable: false } ); }) .catch(err => { console.error("error uploading images: ", err); });
Вот и все! Если это помогло вам избежать головной боли, не стесняйтесь аплодировать этому посту!