簡體   English   中英

使用formData上傳文件會返回未定義的文件數組

[英]file upload with formData returns undefined file array

我從print_r($ _ POST)得到undefined,它發布在同一個php頁面上。

Array ( [file] => undefined )

已編輯 - 添加了調用upload_banner函數的部分

HTML

<form enctype="multipart/form-data" id="banner_form" class="form-horizontal" role="form" action="">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  <input id="file" name="file" type="file" class="filestyle" accept="image/jpeg,image/gif,image/png">
</form>

JS

$('#submit_btn').click(function(e){
    e.preventDefault();

    var date = document.getElementById('datepicker').value;
    var title = document.getElementById('title').value;
    var content = document.getElementsByClassName('note-editable')[0];

    if(date == "" || title == "") {
      alert("Please fill in the required fields");
      return false;
    }
    else {

        var cfm = confirm("Confirm Submit Changes?");
        if(cfm === true)
        {

          var editarea = content.innerHTML;

          $.post ("functions/add_upcoming.php",{date: date,title: title,sm_content: editarea},
            function(data) {
          });

          upload_banner();
        }
        else
        {
          return false;
        }
      }
  });




function upload_banner() {
    var form_data = new FormData($('#banner_form')[0]);
    form_data.append('file', $('input[type=file]')[0].files[0]);

      $.ajax({
        url: "upcomingevents.php?p=73",
        contentType: false,
        processData: false,
        dataType: 'json',
        data: form_data, 
        type: 'post',
        success: function(data) { },
        contentType: false,
        processData: false
    });
}

json作為數據類型導致我從php端返回數組,沒有發布額外的代碼導致我已經在文件上傳部分出現問題

PHP

if(isset($_POST['file'])) {
  print_r($_POST);
  exit();
}

我在這做錯什么嗎?

考慮到您沒有處理程序運行的提交按鈕,您的功能甚至都沒有被調用。 應該是這樣的:

<form enctype="multipart/form-data" id="banner_form" class="form-horizontal" role="form" action="">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  <input id="file" name="file" type="file" class="filestyle" accept="image/jpeg,image/gif,image/png">
  <input type="submit" id="submit_btn"/>
</form>

你的JS中也有語法錯誤,不需要第二組}); 關閉點擊處理程序。

JSFiddle: https ://jsfiddle.net/sggf82am/2/

FormData設置不正確,應該是:

var form_data = new FormData( );
form_data.append('file', $('input[type=file]')[0].files[0]);

你確定ajax提到的網址是否正確?

為什么有查詢參數( ?p=73 ),因為你正在發帖而不是得到

最后,嘗試通過打印響應

success: function(data) { alert(JSON.stringify(data))},

暫無
暫無

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

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