所以我正在努力寻找我正在寻找的东西以及如何实现它。
我有一个基本的PHP文件上传工作,用户按下自定义上传按钮,选择一个文件,然后使用JS,它检查更改(即用户选择文件),然后提交表单上传图片。
我现在想要的只是一个拖累和放大器。下载到上传区域。因此,用户可以从文件浏览器中拖动图像并将其放在指定位置(而不是整个页面),然后删除该图像后,表单将自动与其图像一起提交并使用相同的PHP处理。
这可行且现实吗?
答案 0 :(得分:33)
这绝对是现实的,可以不使用任何第三方插件。
以下摘要应该让您了解它的工作原理:
放弃区域
$(".drop-files-container").bind("drop", function(e) {
var files = e.originalEvent.dataTransfer.files;
processFileUpload(files);
// forward the file object to your ajax upload method
return false;
});
processFileUpload() - 方法:
function processFileUpload(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(var 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
$.ajax({
url : "upload.php", // use your target
type : "POST",
data : uploadFormData,
cache : false,
contentType : false,
processData : false,
success : function(ret) {
// callback function
}
});
}
表单示例
<form enctype="multipart/form-data" id="yourregularuploadformId">
<input type="file" name="files[]" multiple="multiple">
</form>
随意使用这样的东西作为起点。您可以在此处找到浏览器支持http://caniuse.com/#feat=xhr2
当然,你可以添加你想要的任何额外内容,如进度条,预览,动画......