windows中拖动文件到浏览器,实现自动上传,不需要通过点击文件域,然后再去找文件
javascript代码示例:
//拖动License文件到浏览器中,自动读取文件并上传
var dropbox = $("body")[0];
dropbox.addEventListener("dragenter", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
dropbox.addEventListener("dragover", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
dropbox.addEventListener("drop", function(e){
e.stopPropagation();
e.preventDefault();
var files = e.dataTransfer.files;
//检测是否是拖拽文件到页面的操作
if(files.length == 0) {
commons.alert("请选择文件!", "warning");
} else {
for(var i=0;i<files.length;i++){
if(files){
//实例化FileReader()对象 readAsText readAsBineryString readAsArrayBuffer
var reader=new FileReader();
reader.readAsArrayBuffer(files[i]);
}
//获取文件的名称
var licenseFileName = files[i].name;
//加载完成选择的文件后
reader.οnlοad=function(){
var blobFile = new Blob([this.result]);
var formData = new FormData();
formData.append("fileName", blobFile);
$.ajax({
url : 'url',
type : 'POST',
data : formData,
cache : false,
contentType : false,
processData : false,
dataType: "json",
success : function(data) {
alert("上传成功");
},
error : function(request, status, error) {
alert("上传失败");
}
});
}
}
}
}, false);
Java后台代码示例:
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File("临时目录"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(20971520);
List<FileItem> items = new ArrayList<FileItem>();
items = upload.parseRequest(request);
InputStream is=null;
String error=null;
FileItem fItem = items.get(0);
String fieldName = fItem.getFieldName();//fileName
is = fItem.getInputStream();
//接下来要怎么弄就怎么弄