Publicar correctamente un nuevo anuncio, pero la carga de imágenes no funciona
import client from "./client"; import {API_KEY} from "./constant"; const addListing = (postData,locationId,img) => client.post(`api.php?key=${API_KEY}&type=insert&object=item&action=add&catId=${postData.category}&contactName=&contactPhone=${postData.mobile}&sPhone=${postData.mobile}&showPhone=1&contactEmail=${postData.mobile}@kippee.com&price=${postData.price}&countryId=in®ionId=&cityId=${locationId}&title[en_US]=${postData.title}&description[en_US]=${postData.description}&photos=[${imgUrl}]`);¿Cómo puedo convertir a formdata?
A través de una gran cantidad de pruebas y errores, llegué a esta solución para cargar imágenes a s3 desde una aplicación nativa de reacción, debería poder agregar cualquier dato que necesite como parámetros de URL.
let xhr = new XMLHttpRequest(); xhr.open('PUT', media.putURL); // where you want to put the image xhr.upload.addEventListener('progress', (event) => { if (event.lengthComputable) { let percentComplete = (event.loaded / event.total) * 100; } }); xhr.upload.addEventListener('error', () => { // error }); xhr.onload = () => { console.log('onload', xhr.status); // finished }; xhr.onreadystatechange = () => { console.log('xhr.status ', xhr.status); if (xhr.readyState === 4) { if (xhr.status === 200) { // success } else { // upload error } } } xhr.setRequestHeader('Content-Type', 'image/jpg'); if(Platform.OS === 'android'){ xhr.send({uri: media.uri, type: 'image/jpg', name: media.name}); } else { RNFetchBlob.fs.readFile(media.uri, 'base64', 4095).then((data) => { let url = "data:image/jpg;base64,"+data fetch(url).then(res => res.blob()).then((blob) => { xhr.send(blob); }) }).catch((error) => { console.log('Error reading file: ', error); }) }Si es necesario usar el paquete rn-fetch-blob de iOS para obtener los datos de imagen codificados en base64, entonces, al usar la API de obtención, los datos del blob se obtienen de la cadena codificada en base64 que luego se puede pasar a la función de envío xhr.
Es probable que haya una mejor manera de obtener datos de imágenes de iOS, pero cuando escribí esto a principios de año, este proceso de 3 pasos era la única forma en que podía cargar las imágenes de iOS.