Цель: Чтобы успешно передать данные изображения BASE64 в мой узел / экспресс-сервер, чтобы я мог загрузить их в хранилище Microsoft Azure.
Проблема: Не попадает в конечную точку при отправке данных изображения, блок catch указывает, что изображение не было загружено, и console.log не регистрируется. Когда я отправляю только расширение файла, конечная точка успешно нажимается ( консоль регистрирует пользователя obj ). Насколько я понимаю, мне нужно выгрузить данные изображения BASE64 в Azure для использования во всем приложении.
Stack:
- Реактивно-родной (^ 0.54.0)
- Node / Express
- Microsoft Azure Storage
- Postgres (sequelize ":" ^ 4.33.2)
Я использую 'response-native-image-picker' для доступа к камере пользователя, возвращаемый объект фото выглядит следующим образом:
Object {isVertical: false, origURL: "assets-library://asset/asset.JPG?id=ED7AC36B-A150-4C38-BB8C-B6D696F4F2ED&ext=JPG", longitude: -19.5112, data: "/9j/4AAQSkZJRgABAQAASABIAAD/4QBYRXhpZgAATU0AKgAAAA…paLbTp1up3fnf8jjajOztyvlV0ldN23+NWvpoklpsr2P/2Q==", fileName: "IMG_0005.JPG"…}
data:(...)
fileName:(...)
fileSize:(...)
height:(...)
isVertical:(...)
latitude:(...)
longitude:(...)
origURL:(...)
timestamp:(...)
uri:(...)
width:(...)
Поле данных содержит данные изображения BASE64, которые, как мне кажется, мне нужно передать в свой бэкэнд, чтобы загрузить их в мое хранилище Azure. Ниже приведена клиентская функция, которая ДОЛЖНА отправлять соответствующие данные в серверную часть.
export function uploadUserPhoto(photoData, photoExt, id) {
return dispatch => {
dispatch(authProgress());
axios.patch(`${API_URL}/users/upload_profile_photo/${id}`, {
headers: {
'Accept': 'image/jpeg',
'Content-Type': 'image/jpeg'
},
user: {
imageData: photoData,
imageFileName: photoExt
}
})
.then(response => {
dispatch({type: USER_PHOTO_UPLOAD, payload: response.data});
Actions.Profile()
Alert.alert("Upload success!");
})
.catch(error => {
dispatch({ type: USER_PHOTO_UPLOAD_FAILED, payload: error });
Alert.alert("Upload failed! Please try again!");
});
};
}
Я могу подтвердить, что photoData, photoExt успешно передаются в функцию с данными изображения и именем файла. Сторона узла выглядит следующим образом:
router.patch('/upload_profile_photo/:id', async(req, res) => {
console.log(req.body.user)
const paths = await profilePicUpload(req.body.user, req.params.id );
await models.User.update({image: paths },
{ where : {id: req.params.id} });
const userInfo = await models.User.findById(req.params.id);
try {
res.send(userInfo)
}
catch(err) {
console.log(err)
}
});
Есть предложения? Я смотрел на использование новых FormData () , но безуспешно. Читая другие посты, некоторые указывают на проблему с заголовком, но я не вижу, как это может быть проблемой.
Спасибо.