サーバーに画像をアップロード/保存するために、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
}