如何解决将文件从react-nativeexpo项目上载到php服务器laravel
我一直在为这个问题寻找解决方案一周,尝试了很多对我没有用的东西,我正在开发一个基于expo的react-native项目,我正在尝试做的是使用Imagepicker上传图像,我尝试使用axios提交并获取图像,我能够发送文本数据(例如,用户名,电子邮件...),但无法将文件发送到服务器,它无法识别总之,它给我的是[object object],如果有人成功使用php完成此操作,请分享您的代码,我确实尝试了使用html表单的后端,并且文件上传没有问题。>
解决方案
let picker = await ImagePicker.launchImageLibraryAsync({ base64: true });
const picker = selectedImage.base64;
这将返回base64编码的图像数据,您所要做的就是将其作为文本字段发送到php服务器,对其进行解码并将其放入这样的文件中:
file_put_contents("example.jpg",base64_decode($_POST['image']));
是的,它正在工作
解决方法
最简单的解决方案是使用base64图像格式。
您可以将bese64选项设置为true:
let picker = await ImagePicker.launchImageLibraryAsync({ base64:true });
然后将该值附加到经典的json对象中,避免使用multipar / fomr-data,仅用于php解码base64图像。
,反应原生
//用于保存所拾取图像的状态变量
const [selectedImage,setSelectedImage] = useState(false);
//使用图像选择器选择图片
let openImage = async () => {
let permission = await ImagePicker.requestCameraRollPermissionsAsync();
if (permission.granted == false) {
return;
}
let picker = await ImagePicker.launchImageLibraryAsync();
setSelectedImage(picker);
}
//将图像上传到服务器
const uploadimage = async () => {
const payload = new FormData();
payload.append('image',{
uri: selectedImage.uri,type: selectedImage.type,name: selectedImage.fileName
})
const config = {
body: payload,method: 'POST',headers: {
'Content-Type': 'multipart/form-data'
}
};
let response = await fetch('http://192.168.1.6/php_upload/upload.php',config);
console.log(response);
}
// PHP后端
$target_file = "uploads/" . basename($_FILES["image"]["name"]);
if ( move_uploaded_file($_FILES["photo"]["tmp_name"],$target_file) )
{
echo "The file ". basename( $_FILES["photo"]["name"]). " has been uploaded.";
}
else
{
echo "Sorry,there was an error uploading your file.";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。