写在最前面
为了实现一个文件分片上传方法,找了很久的demo,但是一直没有找到,最后找到了一个plupload插件,可以支持文件分片。但是,第一次接触这个插件,有很多不会用的地方,网上的许多文章毕竟是他们做的,拿来当然会有许多坑,一步一步调试再理解插件的作用,最后成功。这个插件中,有许多功能,但我最主要的是用了插件的分片的功能,文件类型验证全部由后端验证。
关于plupload插件的使用方法
plupload插件的使用方法在csdn、博客园、开源中国论坛都有很多讲的,在这里给一个我觉得介绍挺完整的:https://www.cnblogs.com/2050/p/3913184.html
下面这个是官方文档:http://www.phpin.net/tools/plupload/
一、jsp页面
<body>
<div id="uploader"></div>
<a href="listFile.jsp">下载</a>
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function() {
var uploader = $("#uploader").plupload({
runtimes: 'gears,flash,silverlight,browserplus,html5',
url : 'file/pluploadUpload',
multipart: true,
upload_tmp_dir:"d:\\temp",//设置临时文件位置
init:{
BeforeUpload: function(up, file) {
up.settings.multipart_params = {
filename : file.name
};
},
},
multipart_params: {
'key': '${filename}', // use filename as a key
'Filename': '${filename}' // adding this to keep consistency across the runtimes
},
max_file_size: '800mb', // 文件上传最大限制。
chunk_size: '10mb', // 上传分块每块的大小
// max_retries: 1,
multiple_queues :true,
unique_names: false, // 上传的文件名是否唯一
// 是否生成缩略图(仅对图片文件有效)
resize: {
width: 1000,
crop: false,
preserve_headers: true
},
file_data_name: 'file',
rename: false,//可重命名
sortable: true,//可排序
dragdrop: false,//可拖拽
filters : [//文件类型在此处设置,但我放后台验证了
{title: "*", extensions: "*"}
],
views: {
list: true,
thumbs: true, // Show thumbs
active: 'thumbs'
},
// Flash settings
flash_swf_url : 'js/Moxie.swf',
// Silverlight settings
silverlight_xap_url : 'js/Moxie.xap'
});
});
</script>
</body>
二、FileUpload类
File dir = new File(request.getSession().getServletContext().getRealPath("/") + FileDir+"/"+userId);
if(!dir.exists()){
//可创建多级目录,而mkdir()只能创建一级目录
dir.mkdirs();
}
//开始上传文件
PluploadService.upload(plupload,fileName,dir);
Syst