#javascript #react-native #react-native-image-picker #react-native-fs
#javascript #react-native #react-native-image-picker #react-native-fs
Вопрос:
npmPackages:
@react-native-community/cli: ^4.13.0 => 4.13.0
react: 16.13.1 => 16.13.1
react-native: 0.63.3 => 0.63.3
react-native-windows: Not Found
react-native-fs: ^2.16.6
react-native-image-picker: ^2.3.4
IDEs:
Android Studio: Version 3.6.0.0 AI-192.7142.36.36.6241897
Visual Studio: 15.3.26730.12 (Visual Studio Community 2017)
Я пытался реализовать кнопку, которая открывает камеру, делает снимок и сохраняет его в папке с изображениями.
Для этого я использую:
- react-native-image-picker для создания изображения
- react-native-fs для перемещения изображения в выбранное мной имя файла
Именно последнее вызывает у меня головную боль. Вот код, который я использую:
<Buttons.Camera containerStyle={{marginBottom:5}}
onPress={() => {
ImagePicker.launchCamera(options, async (response) => {
console.log('Response = ', response);
if (response.didCancel) {
// ToDo cancelled
console.log('Cancellen');
} else if (response.error) {
console.log('Camera Error: ', response.error);
} else {
var RNFS = require('react-native-fs');
const ext = response.fileName?.split('.').pop();
let newPath = `${RNFS.PicturesDirectoryPath}/${options.storageOptions.path}/avatar.${ext}`;
const result = await RNFS.moveFile(response.path, newPath);
this.setState({
avatarPath: newPath,
});
}
});
}} />
Достигнута точка останова const result = await RNFS.moveFile(response.path, newPath);
. Я могу подтвердить, что изображение действительно существует в моей newPath
галерее, и response.path
оба они действительны.
Когда я пытаюсь переместить файл (фактически переименовать) Я замечаю, что изображения нет newPath
, а исходное изображение, response.path
похоже, повреждено и больше не может быть открыто.
Согласно документам, result
должно быть true
, но в моем случае это так undefined
. То же самое происходит, когда я использую RNFS.exists(newPath)
. Обещание разрешается, но результат есть undefined
. Ошибок не возникает.
Есть идеи?