我在Reactjs和PHP工作,实际上我正在尝试上传图像到服务器,图像正在上传,但每当我试图打开图像,然后显示“我们不支持此文件格式”,我该如何解决这个问题?
1.我正在发送多部分表单数据的formdata,并且在php(API)中我正在使用base64图像上传图像到服务器
1.我发送图片到axios(API)的方法是正确的还是php代码有问题
下面是我的nextjs代码
const handleSubmit: FormEventHandler<HTMLFormElement> = async (e) => {
var imagefile = document.querySelector('#file');
formData.append("file", imagefile.files[0]);
const response = await axios({
method: "post",
url: "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/",
data: formData,
headers: { "Content-Type": "multipart/form-data" },
}).then(function (response) {
alert('respone is '+ response.data.msg);
}).catch(function (error) {
alert('respone is '+ error);
console.log("failed to get recommend playlist");
console.log('error is '+ error.msg);
});
}
下面是我在Php端的API代码
$data = json_decode(file_get_contents("php://input"), TRUE);
$files=file_get_contents($_FILES["file"]["tmp_name"]);
$image = base64_decode(explode( ',', $files)[1]);
define('UPLOAD_DIR', 'uploads/');
$file_ext = strtolower( end(explode('.',$file_name)));
$image_parts = explode(";base64,", $image);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file = UPLOAD_DIR . uniqid() . '.'.$file_ext;
file_put_contents($file, $image_base64);
1条答案
按热度按时间5uzkadbs1#
问题出在PHP上,你可以用
pathinfo()
来获取扩展名,用move_uploaded_file()
把上传的文件移到服务器上。试试这个