Я пытаюсь загрузить изображения с моего устройства Galery в мое приложение React Native Expo с помощью Firebase, но я получаю ошибку OnSubmitCreatEService [Ошибка: создание каплей из «ArrayBuffer» и «ArrayBufferview» не поддерживается]. Может ли кто -нибудь помочь мне решить это, пожалуйста? Однажды я загружаю изображение и проверяю форму. Вот функции PickImage, загрузить и отправлять < /p>
async function pickImageFromLibrary() {
try {
await requestMediaLibraryPermission();
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
quality: 0.9,
});
if (result.canceled) return;
const pickedAsset = result.assets[0];
// Redimensionner / compresser et forcer JPEG
const manipulatedImage = await ImageManipulator.manipulateAsync(
pickedAsset.uri,
[{ resize: { width: 1200 } }],
{ compress: 0.8, format: ImageManipulator.SaveFormat.JPEG }
);
// S’assurer d’un schéma file://
let fileUri = manipulatedImage.uri;
if (!fileUri.startsWith('file://')) {
const target = FileSystem.cacheDirectory + `service-${Date.now()}.jpg`;
await FileSystem.copyAsync({ from: fileUri, to: target });
fileUri = target;
}
setLocalImageUri(fileUri);
} catch (error) {
console.log('pickImageFromLibrary error', error);
Alert.alert('Image', 'Impossible d’ouvrir la galerie.');
}
}
async function uploadImageAndGetUrl(fileUri, workerId) {
setIsUploadingImage(true);
try {
const path = `services/${workerId}/${Date.now()}-${Math.random().toString(36).slice(2, 7)}.jpg`;
const base64 = await FileSystem.readAsStringAsync(fileUri, { encoding: FileSystem.EncodingType.Base64 });
const ref = createStorageRef(firebaseStorage, path);
const dataUrl = `data:image/jpeg;base64,${base64}`;
await uploadString(ref, dataUrl, 'data_url');
const url = await getDownloadURL(ref);
return url;
} finally {
setIsUploadingImage(false);
}
}
async function onSubmitCreateService() {
if (!userIdentifier) {
Alert.alert('Non connecté', 'Connecte-toi pour créer un service.');
return;
}
if (!isFormValid) {
Alert.alert('Champs manquants', 'Merci de remplir tous les champs requis.');
return;
}
setIsSavingService(true);
try {
const now = serverTimestamp();
const categoryReference = doc(firestoreDatabase, 'categories', selectedCategory.id);
// Téléversement de l’image si présente
let imageUrl = null;
if (localImageUri) {
imageUrl = await uploadImageAndGetUrl(localImageUri, userIdentifier);
}
// Création DANS la sous-collection workers/{userIdentifier}/services
await addDoc(collection(firestoreDatabase, 'workers', userIdentifier, 'services'), {
name: serviceName.trim(),
price: Number(servicePrice),
hours: Number(serviceHours) || 0,
minutes: Number(serviceMinutes) || 0,
image: imageUrl,
category: categoryReference,
visible: true,
createdAt: now,
updatedAt: now,
});
navigation.goBack();
} catch (error) {
console.log('onSubmitCreateService error', error);
Alert.alert('Erreur', 'Impossible de créer le service.');
} finally {
setIsSavingService(false);
}
}
< /code>
При необходимости это мой пакет.json < /p>
{
"name": "beautify-worker",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web"
},
"dependencies": {
"@react-native-async-storage/async-storage": "2.1.2",
"@react-native-community/datetimepicker": "8.4.1",
"@react-navigation/bottom-tabs": "^7.4.6",
"@react-navigation/native": "^7.1.17",
"@react-navigation/native-stack": "^7.3.25",
"expo": "53.0.20",
"expo-auth-session": "~6.2.1",
"expo-file-system": "~18.1.11",
"expo-image-manipulator": "~13.1.7",
"expo-image-picker": "~16.1.4",
"expo-secure-store": "~14.2.3",
"expo-status-bar": "~2.2.3",
"expo-web-browser": "~14.2.0",
"firebase": "^12.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-native": "0.79.5",
"react-native-dotenv": "^3.4.11",
"react-native-gesture-handler": "~2.24.0",
"react-native-google-places-autocomplete": "^2.5.7",
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
"react-native-url-polyfill": "^2.0.0",
"react-native-web": "^0.20.0"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@types/react": "~19.0.10",
"typescript": "~5.8.3"
},
"private": true
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... are-not-su
Ошибка [Ошибка: Создание Blobs из «ArrayBuffer» и «ArrayBufferview» не поддерживается] ⇐ Javascript
Форум по Javascript
1756532940
Anonymous
Я пытаюсь загрузить изображения с моего устройства Galery в мое приложение React Native Expo с помощью Firebase, но я получаю ошибку OnSubmitCreatEService [Ошибка: создание каплей из «ArrayBuffer» и «ArrayBufferview» не поддерживается]. Может ли кто -нибудь помочь мне решить это, пожалуйста? Однажды я загружаю изображение и проверяю форму. Вот функции PickImage, загрузить и отправлять < /p>
async function pickImageFromLibrary() {
try {
await requestMediaLibraryPermission();
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
quality: 0.9,
});
if (result.canceled) return;
const pickedAsset = result.assets[0];
// Redimensionner / compresser et forcer JPEG
const manipulatedImage = await ImageManipulator.manipulateAsync(
pickedAsset.uri,
[{ resize: { width: 1200 } }],
{ compress: 0.8, format: ImageManipulator.SaveFormat.JPEG }
);
// S’assurer d’un schéma file://
let fileUri = manipulatedImage.uri;
if (!fileUri.startsWith('file://')) {
const target = FileSystem.cacheDirectory + `service-${Date.now()}.jpg`;
await FileSystem.copyAsync({ from: fileUri, to: target });
fileUri = target;
}
setLocalImageUri(fileUri);
} catch (error) {
console.log('pickImageFromLibrary error', error);
Alert.alert('Image', 'Impossible d’ouvrir la galerie.');
}
}
async function uploadImageAndGetUrl(fileUri, workerId) {
setIsUploadingImage(true);
try {
const path = `services/${workerId}/${Date.now()}-${Math.random().toString(36).slice(2, 7)}.jpg`;
const base64 = await FileSystem.readAsStringAsync(fileUri, { encoding: FileSystem.EncodingType.Base64 });
const ref = createStorageRef(firebaseStorage, path);
const dataUrl = `data:image/jpeg;base64,${base64}`;
await uploadString(ref, dataUrl, 'data_url');
const url = await getDownloadURL(ref);
return url;
} finally {
setIsUploadingImage(false);
}
}
async function onSubmitCreateService() {
if (!userIdentifier) {
Alert.alert('Non connecté', 'Connecte-toi pour créer un service.');
return;
}
if (!isFormValid) {
Alert.alert('Champs manquants', 'Merci de remplir tous les champs requis.');
return;
}
setIsSavingService(true);
try {
const now = serverTimestamp();
const categoryReference = doc(firestoreDatabase, 'categories', selectedCategory.id);
// Téléversement de l’image si présente
let imageUrl = null;
if (localImageUri) {
imageUrl = await uploadImageAndGetUrl(localImageUri, userIdentifier);
}
// Création DANS la sous-collection workers/{userIdentifier}/services
await addDoc(collection(firestoreDatabase, 'workers', userIdentifier, 'services'), {
name: serviceName.trim(),
price: Number(servicePrice),
hours: Number(serviceHours) || 0,
minutes: Number(serviceMinutes) || 0,
image: imageUrl,
category: categoryReference,
visible: true,
createdAt: now,
updatedAt: now,
});
navigation.goBack();
} catch (error) {
console.log('onSubmitCreateService error', error);
Alert.alert('Erreur', 'Impossible de créer le service.');
} finally {
setIsSavingService(false);
}
}
< /code>
При необходимости это мой пакет.json < /p>
{
"name": "beautify-worker",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web"
},
"dependencies": {
"@react-native-async-storage/async-storage": "2.1.2",
"@react-native-community/datetimepicker": "8.4.1",
"@react-navigation/bottom-tabs": "^7.4.6",
"@react-navigation/native": "^7.1.17",
"@react-navigation/native-stack": "^7.3.25",
"expo": "53.0.20",
"expo-auth-session": "~6.2.1",
"expo-file-system": "~18.1.11",
"expo-image-manipulator": "~13.1.7",
"expo-image-picker": "~16.1.4",
"expo-secure-store": "~14.2.3",
"expo-status-bar": "~2.2.3",
"expo-web-browser": "~14.2.0",
"firebase": "^12.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-native": "0.79.5",
"react-native-dotenv": "^3.4.11",
"react-native-gesture-handler": "~2.24.0",
"react-native-google-places-autocomplete": "^2.5.7",
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
"react-native-url-polyfill": "^2.0.0",
"react-native-web": "^0.20.0"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@types/react": "~19.0.10",
"typescript": "~5.8.3"
},
"private": true
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79749907/error-error-creating-blobs-from-arraybuffer-and-arraybufferview-are-not-su[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия