3

我见过很多关于这个问题的话题,但没有一个得到合法的答案或包含 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);
        }
       });
  }

从另一个主题获得上述代码。(alert(uploadFormData); -> 给我一个 Formdata aboject)

PHP:

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

不能让它工作:<

我从 JS 中的回调函数得到的消息是:

未定义索引:文件

4

1 回答 1

1

您的 PHP 代码需要遍历请求中的所有文件。根据您的 javascript,您的 PHP 代码应如下所示:

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

$target变量必须指向文件的本地目标。有关详细信息,请参阅 PHP 手册。

于 2013-08-27T21:22:13.080 回答