0

我正在使用 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

   }
4

1 回答 1

0

看看php手册条目: http: //php.net/manual/en/session.upload-progress.php

于 2013-08-22T19:49:36.160 回答