React Native expo项目使用expo-image-picker上传图片
import * as ImagePicker from 'expo-image-picker';
// 选择照片或拍照
const pickImage = async () => {
// 检查相册和相机权限
const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
if (status !== 'granted') {
alert('需要相册权限才能选择图片');
return;
}
const cameraStatus = await ImagePicker.requestCameraPermissionsAsync();
if (cameraStatus !== 'granted') {
alert('需要相机权限才能拍照');
return;
}
let result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
});
if (!result.cancelled) {
// 上传图片逻辑
uploadImage(result.uri);
}
};
// 上传图片
const uploadImage = (imageUri) => {
const data = new FormData();
// 这里需要替换为你的图片字段名和图片路径
data.append('image', { uri: imageUri, name: 'image.png', type: 'image/png' });
fetch('你的图片上传接口地址', {
method: 'POST',
body: data,
})
.then(response => response.json())
.then(responseJson => {
console.log(responseJson);
})
.catch(error => {
console.error(error);
});
};
在这个例子中,我们首先调用ImagePicker.launchImageLibraryAsync
来打开相册并选择图片,然后调用uploadImage
函数来上传图片。在uploadImage
函数中,我们使用FormData
来构建上传的数据,并通过fetch
发送POST请求到服务器。需要注意的是,你需要替换uploadImage
函数中的接口地址和表单字段名。
评论已关闭