胡子哥哥
2022-05-22 15:51:00
我有一個模塊,用戶可以在其中拍攝圖片(將轉(zhuǎn)換為 a base64 string,然后轉(zhuǎn)換為 a file),我需要將文件上傳到我們的服務(wù)器,但在轉(zhuǎn)換base64為file object并將其附加到formData并提交表單之后。我發(fā)現(xiàn)在我的后端,它無法讀取$_FILES屬性(參考最后一張圖片),數(shù)組是空的,但假設(shè)我的文件在那里。并檢查我的formData變量,將數(shù)據(jù)附加到其中。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(); ... ?>結(jié)果
1 回答

慕絲7291255
TA貢獻1859條經(jīng)驗 獲得超6個贊
您將無法將您的FormData實例附加到現(xiàn)有實例以<form>進行正常提交(我認為)。
如果你想搞亂正常的提交,你需要在<form>like中添加 HTML 元素<input type="file">。
否則,通過 AJAX 提交數(shù)據(jù)
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
}
})
添加回答
舉報
0/150
提交
取消