2013-08-27 141 views
3

我見過很多關於這個問題的主題,但他們都沒有得到一個合法的答案或包含PHP文件。拖放Jquery上傳到PHP

我想做一個拖動&下降保存工具。問題是我的文件沒有上傳到我的FTP文件夾。

我得到了下面的代碼:

HTML:

<div id="drop_zone"> 
    <p>Drop Here</p> 
</div> 

<form enctype="multipart/form-data" id="yourregularuploadformId"> 
     <input type="file" name="files[]" multiple="multiple"> 
</form> 

JS:

$(function() { 
var dropZone = document.getElementById('drop_zone');  
dropZone.addEventListener('dragover', handleDragOver, false); 
dropZone.addEventListener('drop', handleFileSelect, false); 

等....下降部分

function handleFileSelect(evt) { 
    evt.stopPropagation(); 
    evt.preventDefault(); 

    files = evt.dataTransfer.files; 
    uploadFile(files); 

等..獲取文件到我的方法

function uploadFile(droppedFiles){ 
    // add your files to the regular upload form 
    var uploadFormData = new FormData($("#yourregularuploadformId")[0]); 
    if(droppedFiles.length > 0) { // checks if any files were dropped 
     for(f = 0; f < droppedFiles.length; f++) { // for-loop for each file dropped 
      uploadFormData.append("files[]",droppedFiles[f]); // adding every file to the form so you could upload multiple files 
     } 
    } 
// the final ajax call 
    alert(uploadFormData); 
     $.ajax({ 
     url : "php/uploadFile.php", // use your target 
     type : "POST", 
     data : uploadFormData, 
     cache : false, 
     contentType : false, 
     processData : false, 
     success : function(ret) { 
       alert(ret); 
     } 
     }); 
    } 

得到了另一個話題上面的代碼。 (警報(uploadFormData); - >給我一個FORMDATA aboject)

PHP:

 move_uploaded_file($_FILES["file"]["tmp_name"], 
     "ftp/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 

不能讓它工作:<

的信息,我從回調函數得到我的JS是:

未定義的索引:文件

+0

請看這裏然後:http://stackoverflow.com/questions/8206011/how-can-i-move-a-file-to-another-folder-using-php –

+0

你看過你的請求有效載荷瀏覽器嗎?每個文件多部分邊界的名稱屬性是什麼樣的?您的PHP代碼正在查找名爲「文件」的文件。根據你的javascript,我看不出這是正確的。 –

+0

對不起雷,我不知道你的意思是「在瀏覽器中查看請求負載」:(你是怎麼做到的?:) –

回答

1

您的PHP代碼需要遍歷所有文件在請求中。根據你的JavaScript,PHP代碼應該是這個樣子:

foreach ($_FILES["files"] as $file) { 
    move_uploaded_file($file['tmp_name'], $target); 
} 

$target變量必須在當地目的地爲您的文件指向。有關更多詳細信息,請參閱PHP手冊。

+0

就是這樣! :)這麼簡單,當你想到它:)非常感謝你!小事情,如果你還剩下時間:我如何給每個文件上傳一個唯一的名稱 - 如md5加密:) –

+1

如果你想爲每個文件一個唯一的ID,你可以通過生成一個['uniqid 'in PHP](http://php.net/manual/en/function.uniqid.php)。 –