我正在使用 javascript 和 HTML5 实现拖放代码,以将图像上传/保存到服务器。
在服务器端,我有一个 php 文件来处理保存过程。
我希望服务器端 php 文件能够向客户端发送正确的消息。诸如“已保存”、“错误”、“不是图像”等消息。
所以,我认为最简单的方法是header('Location:multinsert2.php?er1=1');
在服务器端和客户端使用if ($_GET['er1']) {echo 'Saved.</br>';}
。
这不起作用。在服务器端文件我只有 php.ini 文件。客户端文件以.php
也许不起作用,因为我在前端使用 javascript 和 XHR2,而不是简单的上传表单?我只是问,因为如果她有旧的浏览器,我会为用户提供使用简单表单上传的替代方法。如果她确实使用了表格,消息会很好地呈现......
我不知道如何解决这个问题,我脑筋急转弯
有什么帮助吗?谢谢
代码... multinsert2.php,客户端,用于上传图像和渲染消息的片段
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php');
xhr.onload = function() {
if (xhr.status === 200)
{
progress.value = progress.innerHTML = 100;
alert('all ok');
}
else {alert('hmmm, not today');}
};
xhr.send(formData);
<?php
if ($_GET['er1']) {echo 'error.</br>';}
if ($_GET['er2']) {echo 'uploaded.</br>';}
if ($_GET['er3']) {echo 'image already exists.</br>';}
if ($_GET['er4']) {echo 'saved.</br>';}
if ($_GET['er5']) {echo 'error, invalid file.</br>';}
?>
upload.php,服务器端,处理文件片段
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 4000000))
if ($_FILES["file"]["error"] > 0)
{
header('Location:multinsert2.php?er1=1');//error
}
else
{header('Location:multinsert2.php?er2=1');//uploaded
}
if (file_exists("cultmapsite/upload" . $_FILES["file"]["name"]))
{
header('Location:multinsert2.php?er3=1');//image already exists
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
header('Location:multinsert2.php?er4=1');//saved
}
}
}
else
{
header('Location:multinsert2.php?er5=1');//error, invalid file
}