Чтобы отправить изображение в API в Expo React Native, вы можете использовать несколько методов. Вот несколько подходов:
- Использование объекта FormData: вы можете создать объект FormData и добавить к нему файл изображения. Затем вы можете отправить объект FormData в качестве тела запроса API, используя библиотеку fetch или axios.
import { ExpoImagePicker } from 'expo-image-picker';
const pickImage = async () => {
const result = await ExpoImagePicker.launchImageLibraryAsync();
if (!result.cancelled) {
const formData = new FormData();
formData.append('image', {
uri: result.uri,
type: 'image/jpeg',
name: 'image.jpg',
});
// Send the formData object as the body of your API request
// using fetch or axios
}
};
- Преобразование изображения в Base64. Другой подход — преобразовать изображение в строку Base64 и включить его в полезную нагрузку запроса. Вы можете использовать библиотеку
expo-image-pickerдля выбора изображения и библиотекуexpo-file-systemдля чтения и преобразования изображения в base64.
import * as ExpoImagePicker from 'expo-image-picker';
import * as FileSystem from 'expo-file-system';
const pickImage = async () => {
const result = await ExpoImagePicker.launchImageLibraryAsync();
if (!result.cancelled) {
const base64Image = await FileSystem.readAsStringAsync(result.uri, {
encoding: 'base64',
});
// Include the base64Image string in your API request payload
// using fetch or axios
}
};
- Загрузка через URL-адрес. Если API поддерживает загрузку изображений через URL-адрес, вы можете загрузить изображение в облачное хранилище (например, AWS S3), а затем отправить URL-адрес загруженного изображения в API.
import { ExpoImagePicker } from 'expo-image-picker';
const pickImage = async () => {
const result = await ExpoImagePicker.launchImageLibraryAsync();
if (!result.cancelled) {
// Upload the image to a cloud storage service (e.g., AWS S3) and
// obtain the URL of the uploaded image
const imageUrl = 'https://example.com/uploaded-image-url';
// Send the imageUrl as part of your API request
// using fetch or axios
}
};