亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過ajax上傳圖像時未定義索引“文件”

通過ajax上傳圖像時未定義索引“文件”

PHP
弒天下 2023-10-15 16:43:03
嘿,我正在嘗試向 mysql 數據庫提交表單。不過,該表單位于模式內部。然后,數據通過 ajax 發送到 ajax 處理程序,并運行 php 函數。每次在處理程序中寫入“文件”一詞時,我都會收到錯誤。這是我的表單、ajax 和處理程序。表單輸入:<div class="form-group">    <label>Image</label>    <input type="file" class="addInput" name="image" id="newImage" placeholder=""></div>JavaScript/Ajaxvar name = $('#newName').val();              var description = $('#newDescription').val();              var notes = $('#newNotes').val();              var status = ($('#newStatus').is(":checked") ? 'active' : '');              var slug = $('#newSlug').val();              var start_date = $('#newStartDate').val();              var end_date = $('#newEndDate').val();              var image = $('#newImage').val();              let data = {                action: 'NewEventExhibition',                name: name,                description: description,                notes: notes,                status: status,                slug: slug,                start_date: start_date,                end_date: end_date,                image: image,                event_code: '<?=$code?>'              };              console.log(data);              $.ajax({                url: '/modules/ajax/ajax_handler.php',                type: 'POST',                data: data,                success: function(response) {                  console.log(response);                },                fail: function(response) {                  console.log(response);                }              })處理程序$added = $image = $filename = $imagefile = $imagefilesuccess1 = $imagefilewarning1 = NULL;        if(!empty($_POST['image'])){        $filename=($_SERVER['DOCUMENT_ROOT']."/assets/images/" . $_FILES["file"]["name"]);        $imagefile=($_FILES["file"]["name"]);            $path="/assets/images/".$imagefile."";        $allowedExts = array("gif", "jpeg", "jpg", "png", "JPG", "PNG");        $tmp = explode(".", $imagefile);我只將圖像代碼包含在 ajax 處理程序中。$image底部的變量是我用來上傳的變量。
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

要通過 ajax 上傳文件,您可以使用FormData。但首先你需要查看你的瀏覽器是否支持 XHR2 ,并不是每個瀏覽器都支持通過 ajax 發送文件。

因此,如果您想讓腳本在每個瀏覽器中工作,最好采取解決辦法,(嘗試在隱藏輸入中執行 Base64,或者使用 iram,以便 iram 單獨刷新)

支持XHR2 的瀏覽器

因此,要添加 formData,您可以在 js 腳本中做一些更改:

??var?formData?=?new?FormData($('#yourform')[0]);

或者如果您不想在 yout html 中創建任何表單:

var formData = new FormData();

formData.append('name',$('#name').val());

formData.append('image',$('#image').get(0).files[0]);

。 編輯


你也可以嘗試這個:


<input type="file" onchange="PrepareFile(this)" >

并初始化一個全局formData


async function PrepareFile(file)?

{? ? ? ? ?

? ? formData.append("file", file.files[0]);

}

.


... // inside? ?$.ajax({

? ? data: formData,

? ? dataType: 'json',

? ? mimeType: 'multipart/form-data', // this too

? ? contentType: false,

? ? cache: false,

? ? processData: false,

....

或者您可以使用XMLHttpRequest,在這種情況下,您將放棄 ajax 僅適用于 javascript ,但不適用于 IE<10。


查看完整回答
反對 回復 2023-10-15
  • 1 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號