【问题标题】:Drag and Drop Jquery upload to PHP拖放 Jquery 上传到 PHP
【发布时间】:2013-08-30 15:50:09
【问题描述】:

我已经看到很多关于这个问题的主题,但没有一个得到合法的答案或包含 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 中的回调函数得到的消息是:

未定义的索引:文件

【问题讨论】:

  • 您是否查看过浏览器中的请求负载?每个文件多部分边界的名称属性是什么样的?您的 PHP 代码正在寻找“名称”值为“文件”的文件。根据您的 javascript,我看不出这是如何正确的。
  • 对不起,Ray,我不知道您所说的“查看浏览器中的请求负载”是什么意思 :( 你是怎么做到的?:)
  • 查看 Chrome 开发工具或 Firebug 中的网络标签。
  • 我明白了! thanx :) 这是我的输出: ------WebKitFormBoundarykTwWycDebBDlvAmN Content-Disposition: form-data;名称=“文件[]”; filename="" Content-Type: application/octet-stream

标签: php jquery html upload drag-and-drop


【解决方案1】:

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

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

$target 变量必须指向文件的本地目标。详情请参阅 PHP 手册。

【讨论】:

  • 就是这样! :) 想想就这么简单 :) 非常感谢!如果你有时间的话,小事:我如何给我上传的每个文件一个唯一的名字——比如 md5 加密 :)
  • 如果您想要每个文件的唯一 ID,您可以通过生成 uniqid in PHP 在服务器端轻松完成此操作。
猜你喜欢
  • 2011-06-23
  • 2012-09-08
  • 1970-01-01
  • 2011-09-02
  • 2012-01-26
  • 2014-08-31
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多