0

サーバーに画像をアップロード/保存するために、javascript と HTML5 を使用してドラッグ アンド ドロップ コードを実装しています。

サーバー側には、保存プロセスを処理するための php ファイルがあります。

サーバー側のphpファイルがクライアントに正しいメッセージを送信できるようにしたい. 「保存済み」、「エラー」、「画像ではありません」などのメッセージ。

したがって、私が考えた最も簡単な方法はheader('Location:multinsert2.php?er1=1');、サーバー側とクライアント側で使用することif ($_GET['er1']) {echo 'Saved.</br>';}です。

これは動作しません。サーバー側のファイルにはphpしかありません。クライアント側のファイルは次で終わります.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 に答える