簡體   English   中英

使用 ajax 和 php 從多個表單上傳圖像

[英]upload image from multiple form with ajax and php

在 PHP 頁面中使用多個表單標簽來注冊用戶信息。 使用 ajax 收集數據並發布到注冊 PHP 頁面現在我想將圖像上傳到服務器文件夾但我失敗了。

我的 html 代碼:

<label for="upimage" class="btn btn-sm btn-primary mb-75 mr-75">Upload Image</label>
<input type="file" id="upimage" hidden accept="image/*" name="image"/>

Javascript 代碼:

let data1 = document.getElementById('data1').value,
    data2 = document.getElementById('data1').value,
    data3 = document.getElementById('data1').value,
    upimage = document.getElementById('upimage').value;
$.ajax({
    url:"././newregister.php",
    method:"POST",
    data:{action:'newregister', data1:data1, data2:data2,
        data3:data3, upimage:upimage},
    success:function(data){
        alert(data);
    }
});

新注冊 php 代碼:

$uploads_dir = './uploads';
if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
    $tmp_name = $_FILES["file"]["tmp_name"];
    $name = $_FILES["file"]["name"];
    move_uploaded_file($tmp_name, "$uploads_dir/$name");
    echo "Sucsess"; 
}
else
{
    echo "Error" . $_FILES["file"]["error"] ; 
}

ERR:未定義的索引:文件在....在線....

通過POST 方法上傳

確保您的文件上傳表單具有屬性 enctype="multipart/form-data" 否則文件上傳將無法正常工作。

您當前的解決方案缺少 enctype,這就是您的文件沒有上傳到服務器的原因,因此不在超全局變量 $_FILES 中。


正如ferikeem已經說過的那樣。 將您的數據包裝在 FormData Object 中並以這種方式發送。 請參閱: https://stackoverflow.com/a/5976031/10887013

JavaScript

let fd = new FormData();
fd.append("you_file_key_here", $("#upimage")[0].files[0]);
fd.append("data1", $("#data1")[0].value);
fd.append("data2", $("#data2")[0].value);
fd.append("data3", $("#data3")[0].value);

$.ajax({
    url: "././newregister.php",
    method: "POST",
    data: fd,
    processData: false,
    contentType: false,
    success: function(data){
        alert(data);
    }
});

$_FILES["file"] ,這是你的問題。

$_FILES數組鍵"file"不存在。 如我所見,您需要使用$_FILES["upimage"]更改$_FILES["file"] ] 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM