このコードは、ブラウザを更新せずに写真をアップロードする場所です。しかし、私はアップローダーファイルが気に入らなかったので、以前使っていたものを使用することにしました。問題は、javascriptファイルから文字列の代わりに配列を送信していることです(1つではなく複数のファイルを送信することを意図していました)。ここでは、配列を作るコードは次のとおりです。JavaScriptでフォームからファイルを送信するJQuery AJAX
input.addEventListener("change", function (evt) {
document.getElementById("response").innerHTML = "Loading . . ."
var i = 0, len = this.files.length, img, reader, file;
for (; i < len; i++) {
file = this.files[i];
if (formdata) {
formdata.append("uploaded_file[]", file);
} } }
if (formdata) {
$.ajax({
url: "img_upload.php",
type: "POST",
data: formdata,
processData: false,
contentType: false
}).done(function (res) {
/* *** show uploaded item *** */
/* *** show response *** */
});
}
私の知識は本当に弱いですし、私の代わりに、配列の自身でアップロードされたファイルを送信するには、このコードを変更する方法を見つけることができません。
(send_imgはフォーム名/ IDです)私は独立してこれらを試してみましたが、それらのどれも働いた:
formdata = document.send_img.uploaded_file.value;
formdata = document.getElementById("uploaded_file");
formdata = new formdata ($('#send_img'));
formData = $('#send_img').serialize();
formdata.replaceWith("uploaded_file[]", file);
私も同じキー(0)を使用するfor
を排除しようとしたが、それにはありませんそのように働く。 img_upload.phpのための凝縮コードは次のとおりです。
$fileName = $target . $_FILES["uploaded_file"]["name"];
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"];
$fileName = $new_name . "." . $fileExt;
move_uploaded_file($fileTmpLoc, "images/images/temp/$fileName");
どのように私はちょうど1つの文字列にアップロードされたファイル(またはヘッダーまたは何でも送信することになっている)を送信することができますと、追加された第二のファイルの場合は、配列に2番目の値を作成する代わりに最初の配列を置き換えますか?