У меня есть существующий пример кода, и все это во многом основано на нем, но это не работает ни с https://galaxies.dev/react-native-image-upload
В любом случае, это не совсем то, что я хочу, мне нужно выбрать или взять изображение, а затем использовать манипулятор изображений, чтобы сжать его. У меня все это работает, и я могу получить данные uri или base64.
Как я могу использовать FileSystem.uploadAsync для загрузки самого изображения или данных base64 на мой сервер. В примере я использую PHP для получения данных и их сохранения.
Это то, что я использую для своего RN-кода, без части image.manipulation:
Чтобы получить изображение:
Код: Выделить всё
const selectImage = async (useLibrary: boolean) => {
let result;
const options: ImagePicker.ImagePickerOptions = {
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
aspect: [4, 3],
quality: 0.75
};
if (useLibrary) {
result = await ImagePicker.launchImageLibraryAsync(options);
} else {
await ImagePicker.requestCameraPermissionsAsync();
result = await ImagePicker.launchCameraAsync(options);
}
// Save image if not cancelled
if (!result.canceled) {
setImage(result.assets[0].uri);
upload_img(image); // I have tried (result.assets[0].uri)
}
};
Код: Выделить всё
const upload_img = async (image) => {
setUploading(true);
await FileSystem.uploadAsync('https://mysever/upload.php', uri, { // I have tried changing this to the result.assets[0].uri also?
httpMethod: 'POST',
uploadType: FileSystem.FileSystemUploadType.MULTIPART,
fieldName: 'file',
fileName: 'Test', // I added this
});
setUploading(false);
};
Есть этот бит, который сохраняет изображение, но, кажется, присваивает другую информацию, и я думаю, что его нужно как-то включить, но я не могу понять, где:
Код: Выделить всё
const saveImage = async (uri: string) => {
await ensureDirExists();
const filename = new Date().getTime() + '.jpeg';
const dest = imgDir + filename;
await FileSystem.copyAsync({ from: uri, to: dest });
setImages([...images, dest]); // I am only sending selected file so no need to save it
};
Код PHP такой же, как код в примере, но вот он: -
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/773 ... age-picker
Мобильная версия