你好,我用webuploader.html5only.min.js实现批量图片上传,我该怎么在action中获取上传的那些文件呢? | 您所在的位置:网站首页 › 图片批量上传插件 › 你好,我用webuploader.html5only.min.js实现批量图片上传,我该怎么在action中获取上传的那些文件呢? |
1.1 分片、并发 分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。 当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。 1.2 预览、压缩 支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。 解析jpeg中的meta信息,对于各种orientation做了正确的处理,同时压缩后上传保留图片的所有原始meta数据。 1.3 多途径添加文件 支持文件多选,类型过滤,拖拽(文件文件夹),图片粘贴功能。 粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。 1.4 HTML5 FLASH 兼容主流浏览器,接口一致,实现了两套运行时支持,用户无需关心内部用了什么内核。 同时Flash部分没有做任何UI相关的工作,方便不关心flash的用户扩展和自定义业务需求。 1.5 MD5秒传 当文件体积大、量比较多时,支持上传前做文件md5值验证,一致则可直接跳过。 如果服务端与前端统一修改算法,取段md5,可大大提升验证性能,耗时在20ms左右。 1.6 易扩展、可拆分 采用可拆分机制, 将各个功能独立成了小组件,可自由搭配。 采用AMD规范组织代码,清晰明了,方便高级玩家扩展。 2、引入资源 2.1 下载包内容 ├── Uploader.swf // SWF文件,当使用Flash运行时需要引入。
├── webuploader.js // 完全版本。 ├── webuploader.min.js // min版本
├── webuploader.flashonly.js // 只有Flash实现的版本。 ├── webuploader.flashonly.min.js // min版本
├── webuploader.html5only.js // 只有Html5实现的版本。 ├── webuploader.html5only.min.js // min版本
├── webuploader.withoutimage.js // 去除图片处理的版本,包括HTML5和FLASH. └── webuploader.withoutimage.min.js // min版本 2.2 或者直接使用由staticfile提供的cdn版本,或者下载Git项目包。 // SWF文件,当使用Flash运行时需要引入。 ├── http://cdn.staticfile.org/webuploader/0.1.0/Uploader.swf
// 完全版本。 ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.js ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.min.js
// 只有Flash实现的版本。 ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.js ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.min.js
// 只有Html5实现的版本。 ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.js ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.min.js
// 去除图片处理的版本,包括HTML5和FLASH. ├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.js └── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.min.js 2.3 DIY打包 WebUploader文件打包借助了Grunt工具来实现 2.3.1 环境依赖 1.git命令行工具 2.node npm命令行工具 3.grunt (npm install grunt-cli -g) 2.3.2 编译代码 1.克隆 webuploader git仓库,git clone https://github.com/fex-team/webuploader.git。 2.安装node依赖,npm install。 3.执行grunt dist,此动作会在dist目录下面创建合并版本的js, 包括通过uglify压缩的min版本。 2.3.3 配置 打开webuploader仓库根目录下面的Gruntfile.js文件, 代码合并有buildtask来完成。找到build配置项。 Gruntfile.js已经配置了一个自定义合并的demo. 打包只支持HTML5的版本 // 自己配置的实例 // glob语法。 custom: { preset: "custom", cwd: "src", src: [ 'widgets/**/*.js', 'runtime/html5/**/*.js' ], dest: "dist/webuploader.custom.js" } 3、angular指令——web-uploader 3.1 指令功能 添加一个上传文件按钮,可以自行配置上传文件的类型和过滤规则,且在弹出的模态框中进行操作,支持连续上传,分类选择上传 3.2 使用说明 这里只是使用说明,可能会加一些注意事项,具体参数或者变量说明请参看后面 3.2.1 页面添加一个指令 web-uploader class="btn btn-info" type="image" accept="accept"uploader/web-uploader 3.2.2 配置上传类型和过滤规则 上传类型 type有四种类型,分别为 image:图片 video:音视频 flash:flash file:办公文档,压缩文件等等 过滤规则 accept有四个对象属性,属性中包含标题、允许文件后缀、允许的mimetype 3.2.3 指令中绑定弹出模态框的事件 web-uploader这个指令中其实只做了一件事,给元素本身绑定弹出模态框的事件,具体上传文件是在模态框中完成的 3.2.4 初始化uploader类,配置相关属性 在模态框控制器中用到了$timeout $timeout(function(){ //这里是上传配置代码 },0) 因为配置uploader时需要事先准备好dom元素,angular打开模态框是异步而JavaScript是单线程,所以实际上在执行模态框控制器中的代码时,模态框并没有打开,也就是dom并没有加载完成,这会导致WebUploader报a.runningtime is not a function...的错误 3.3 指令详细说明 3.3.1 父级controller中的配置 .controller('myCtrl',['$scope', '$modal', function($scope, $modal){ //配置允许上传的类型 图片/音视频/flash/文件 $scope.accept = { //图片 image: { title : 'Images',//标题 extensions : 'gif,jpg,jpeg,bmp,png,ico',//允许上传文件的后缀 mimeTypes : 'image/*'//允许的mimetype }, //音视频 video: { title : 'Videos', extensions : 'wmv,asf,asx,rm,rmvb,ram,avi,mpg,dat,mp4,mpeg,divx,m4v,mov,qt,flv,f4v,mp3,wav,aac,m4a,wma,ra,3gp,3g2,dv,vob,mkv,ts', mimeTypes : 'video/*,audio/*' }, //flash flash: { title : 'Flashs', extensions : 'swf,fla', mimeTypes : 'application/x-shockwave-flash' }, //办公文档,压缩文件等等 file: { title : 'Files', extensions : 'zip,rar,ppt,pptx,doc,docx,xls,xlsx,pdf', mimeTypes : 'application/zip,application/x-rar-compressed,application/vnd.ms-powerpoint,application/vnd.openxmlformats- officedocument.presentationml.presentation,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms- excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/pdf' } }
}]) 3.3.2 指令web-uploader .directive('webUploader', ['$modal', function($modal){ return{ restrict: 'AE', scope: { accept: '=accept' }, link: function($scope, $element, $attr){
$element.bind('click',function(){ var modalInstance = $modal.open({ controller: 'modalCtrl', templateUrl: 'template/webuploader.tpl.html', size:'lg', resolve: { items: function(){ return { accept: $scope.accept, type: $attr.type } } } }) modalInstance.result.then(function(returnStatus){ console.log(returnStatus) },function(){ console.log('Modal dismissed at: ' + new Date()) }) }) } } }]) 用这个插件吧,jspsmartuploadupload.html页面 html head title文件上传/title meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" /head body p /p p align="center"上传文件选择/p FORM METHOD="POST" ACTION="jsp/do_upload.jsp" ENCTYPE="multipart/form-data" input type="hidden" name="TEST" value="good" table width="75%" border="1" align="center" tr tddiv align="center"1、 input type="FILE" name="FILE1" size="30" /div/td /tr tr tddiv align="center"2、 input type="FILE" name="FILE2" size="30" /div/td /tr tr tddiv align="center"3、 input type="FILE" name="FILE3" size="30" /div/td /tr tr tddiv align="center"4、 input type="FILE" name="FILE4" size="30" /div/td /tr tr tddiv align="center" input type="submit" name="Submit" value="上传它!" /div/td /tr /table /FORM /body /html do_upload.jsp页面 %@ page contentType="text/htmlcharset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" % html head title文件上传处理页面/title meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" /head body % // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload() // 上传初始化 su.initialize(pageContext) // 设定上传限制 // 1.限制每个上传文件的最大长度。 // su.setMaxFileSize(10000) // 2.限制总上传数据的长度。 // su.setTotalMaxFileSize(20000) // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 // su.setAllowedFilesList("doc,txt") // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, jsp,htm,html扩展名的文件和没有扩展名的文件。 // su.setDeniedFilesList("exe,bat,jsp,htm,html,,") // 上传文件 su.upload() // 将上传文件全部保存到指定目录 int count = su.save("/upload") out.PRintln(count+"个文件上传成功!br")
// 利用Request对象获取参数之值 out.println("TEST="+su.getRequest().getParameter("TEST") +"BRBR") // 逐一提取上传文件信息,同时可保存文件。 for (int i=0isu.getFiles().getCount()i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i)
// 若文件不存在则继续 if (file.isMissing()) continue // 显示当前文件信息 out.println("TABLE BORDER=1") out.println("TRTD表单项名(FieldName)/TDTD" + file.getFieldName() + "/TD/TR") out.println("TRTD文件长度(Size)/TDTD" + file.getSize() + "/TD/TR") out.println("TRTD文件名(FileName)/TDTD" + file.getFileName() + "/TD/TR") out.println("TRTD文件扩展名(FileExt)/TDTD" + file.getFileExt() + "/TD/TR") out.println("TRTD文件全名(FilePathName)/TDTD" + file.getFilePathName() + "/TD/TR") out.println("/TABLEBR") // 将文件另存 // file.saveAs("/upload/" + myFile.getFileName()) // 另存到以WEB应用程序的根目录为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL) // 另存到操作系统的根目录为文件根目录的目录下 // file.saveAs("c:\\temp\\" + myFile.getFileName(), su.SAVE_PHYSICAL) } % /body /html 参考资料来源:http://www.knowsky.com/3136.html 呵呵 正好前端时间我 也用到了 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/zaji/6098778.html |
CopyRight 2018-2019 实验室设备网 版权所有 |