0
我試圖建立一個允許在PHP中上傳文件的應用程序。上傳文件時,應將下載鏈接附加到特定的div。我正在使用ajax調用來運行php腳本,這樣我就可以將文件下載鏈接回顯,而不會陷入到php頁面中。 (我希望是有道理的。)
下面是HTML:
<form action="php/upload.php" method="POST" enctype="multipart/form-data" id="uploadform">
Select file to upload:
<input type="file" name="fileToUpload" id="file">
<input id="create" type="submit" value="Upload File">
</form>
這裏是外部JavaScript/jQuery的,使AJAX調用:
$(function() {
$('form').on('submit', function (e) {
//prevents reloading of page
e.preventDefault();
//get file data
var file_data = $("#file").prop("files")[0];
var form_data = new FormData();
form_data.append('file', file_data);
//run upload.php script and append result to draggable block
$.ajax({
type: 'post',
url: 'php/upload.php',
cache: false,
data: form_data,
success: function (data) {
$("#draggable"+i).append(data);
i++;
}
});
});
});
這裏是外部PHP腳本應該上傳的文件:
<?php
$target_path = "../uploads/";
$target_path = $target_path . basename($_FILES[ 'fileToUpload' ][ 'name' ]);
if (move_uploaded_file($_FILES[ 'fileToUpload' ][ 'tmp_name' ] , $target_path)){
//echo '<a href=' . $target_path . ' download>Download</a>';
}
else {
echo $target_path;
//var_dump($_FILES);
}
我得到以下錯誤:Uncaught TypeError:非法調用
問題來自於嘗試在ajax調用中傳遞'form_data'。我試圖這樣做,因爲$ _FILES數組一旦運行了php腳本就會變空。我需要一種方法來確保我上傳的文件存儲在該數組中。
可能重複http://stackoverflow.com/questions/20818854/upload-image-with-ajax-and -php) – Forien 2014-12-07 00:49:17