react-native - 如何使用axios从imagePicker上传图片
问题描述
我试图在邮递员中将文件图像上传到 API 工作正常,但是当我尝试从 ImagePicker 中的文件图像时不起作用。
我认为创建表单数据时做错了什么
处理程序
ImagePicker.showImagePicker(optionsImagePicker, (response) => {
console.log('Response = ', response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if (response.customButton) {
console.log('User tapped custom button: ', response.customButton);
} else {
// const source = { image: response.data };
let photo = { uri: response.uri}
let formdata = new FormData();
formdata.append("product[name]", 'test')
formdata.append("product[price]", 10)
formdata.append("product[category_ids][]", 2)
formdata.append("product[description]", '12dsadadsa')
formdata.append("product[images_attributes[0][file]]", {uri: photo.uri, name: 'image.jpg', type: 'image/jpeg'})
updateProfilePic(formdata)
// You can also display the image using data:
// const source = { uri: 'data:image/jpeg;base64,' + response.data };
// this.setState({
// avatarSource: source,
// });
}
});
服务
export function uploadImageProfile(data: any): Promise<any> {
const config = {
headers: {
'Content-Type': 'multipart/form-data',
},
};
return api.post('/users/profilepic', {image: data}, config).then((res) => {
console.log(res.data);
return res.data;
});
}
解决方案
您的表单数据必须是这样的。
formdata.append('file',{
uri: Platform.OS === 'android' ? photo.uri : 'file://' + photo.uri,
name: 'test',
type: 'image/jpeg' // or your mime type what you want
});
然后
axios.post('/users/profilepic', formdata, config).then((res) => {
console.log(res.data);
return res.data;
});
推荐阅读
- r - 仅使用函数的非缺失参数应用过滤器
- ios - 是否可以通过动态单元格高度更改集合视图的高度?如果可能,我们应该使用哪种委托方法?
- c - 我在循环中找不到错误语法:c
- regex - 如何排除字符串开头和结尾的任何单个字母,但如果没有任何内容,仍然会得到匹配
- java - Activiti:从特定步骤重新启动流程
- mysql-python - pypy 导入 MySQL-Python 库失败
- three.js - 为什么在three.js中看不到模型fbx?
- python - PyQt5 QTextBrowser - setText - 对齐问题?
- java - @TransitionFrom 和 @TransitionTo 应该如何使用
- java - java.util.Base64 无法用 OpenJ9 解析