【发布时间】: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