我编写此代码是为了使用inputHTML中的元素将图像上传到本地Apache Web服务器。该file记录为不为空,但为什么是form_data完全空的?
input
file
form_data
$('#upload-image').change(function(e){ var file = e.target.files[0]; var imageType = /image.*/; if (!file.type.match(imageType)) return; console.log(file); var form_data = new FormData(); form_data.append('file', file); console.log(form_data); $.ajax({ url: 'http://localhost/upload.php', cache: false, contentType: false, processData: false, data: form_data, type: 'POST', success: function(response){ console.log(response); }, error: function(error){ console.log(error); } }); });
这是我upload.php在本地网络服务器上的
upload.php
<?php header('Access-Control-Allow-Origin: *'); if ( 0 < $_FILES['file']['error'] ) { echo 'Error: ' . $_FILES['file']['error'] . '<br>'; } else { move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']); $target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_FILES['file']['name']; echo $target_path; } ?>
将console.log(response)记录所有PHP文件的代码行,而不是返回的结果echo
console.log(response)
echo
仅记录formData对象时,console.log(formData)它始终返回空,因为您无法记录formData。
console.log(formData)
如果您只需要在发送前对其进行记录,则可以使用它entries()来获取formData对象中的条目
entries()
$('#upload-image').change(function(e) { var file = e.target.files[0]; var imageType = /image.*/; if (!file.type.match(imageType)) return; var form_data = new FormData(); form_data.append('file', file); for (var key of form_data.entries()) { console.log(key[0] + ', ' + key[1]); } $.ajax({ url: 'http://localhost/upload.php', cache: false, contentType: false, processData: false, data: form_data, type: 'POST', success: function(response) { console.log(response); }, error: function(error) { console.log(error); } }); });