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

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

服務器端無法捕獲附加的表單數據文件

服務器端無法捕獲附加的表單數據文件

胡子哥哥 2022-05-22 15:51:00
我有一個模塊,用戶可以在其中拍攝圖片(將轉換為 a base64 string,然后轉換為 a file),我需要將文件上傳到我們的服務器,但在轉換base64為file object并將其附加到formData并提交表單之后。我發現在我的后端,它無法讀取$_FILES屬性(參考最后一張圖片),數組是空的,但假設我的文件在那里。并檢查我的formData變量,將數據附加到其中。html<form id="form" method="POST" action="smth.php" enctype="multipart/form-data">  ...  <!-- some other input information --></form>js$('#form').on('submit', function(){  ...  var formData = new FormData($(this)[0]);  var base64 = $('#photo').attr('src');  console.log(...formData);  console.log('before checking');  if(base64 != 'default.png'){    var file = dataUrltoFile(base64, 'photo.png'); //external function to convert base64 into file object    formData.append('photo', file);  }  console.log('after checking');  console.log(...formData);  ...});smth.php<?php ... var_dump($_POST); var_dump($_FILES); exit(); ... ?>結果
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

您將無法將您的FormData實例附加到現有實例以<form>進行正常提交(我認為)。


如果你想搞亂正常的提交,你需要在<form>like中添加 HTML 元素<input type="file">。


否則,通過 AJAX 提交數據


document.getElementById('form').addEventListener('submit', async function(e) {

  e.preventDefault()


  const formData = new FormData(this)


  // do stuff to formData


  const res = await fetch(this.action, {

    method: this.method,

    body: formData // automatically sets Content-type: multipart/form-data

  })


  if (res.ok) {

    // handle response

  }

})


查看完整回答
反對 回復 2022-05-22
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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