webuploader一次性上传多张图片到后台,后台如何处理
如题,我用webuploader上传图片,后台用springmvc,上传一张时没有问题,但一次性上传多张的时候,后台我就不知道怎么处理了,作为后台我不知道前端传来几张
这是前端页面代码
<script type="text/javascript"> // 图片上传demo jQuery(function() { var $ = jQuery, $list = $('#fileList'), // 优化retina, 在retina下这个值是2 ratio = window.devicePixelRatio || 1, // 缩略图大小 thumbnailWidth = 100 * ratio, thumbnailHeight = 100 * ratio, // Web Uploader实例 uploader; // 初始化Web Uploader uploader = WebUploader.create({ // 自动上传。 auto: true, // swf文件路径 swf:'../js/Uploader.swf', // 文件接收服务端 server: 'http://localhost:8080/testFileload/testup.do', //可上传的文件数量 fileNumLimit: 11, // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: '#filePicker', sendAsBinary:true, fileVal:'filetoup', // 只允许选择文件,可选。 accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/*' } }); // 当有文件添加进来的时候 uploader.on( 'fileQueued', function( file ) { var $li = $( '<div id="' + file.id + '" class="file-item thumbnail">' + '<img>' + '<div class="info">' + file.name + '</div>' + '</div>' ), $img = $li.find('img'); $list.append( $li ); // 创建缩略图 uploader.makeThumb( file, function( error, src ) { if ( error ) { $img.replaceWith('<span>不能预览</span>'); return; } $img.attr( 'src', src ); }, thumbnailWidth, thumbnailHeight ); }); // 文件上传过程中创建进度条实时显示。 uploader.on( 'uploadProgress', function( file, percentage ) { var $li = $( '#'+file.id ), $percent = $li.find('.progress span'); // 避免重复创建 if ( !$percent.length ) { $percent = $('<p class="progress"><span></span></p>') .appendTo( $li ) .find('span'); } $percent.css( 'width', percentage * 100 + '%' ); }); // 文件上传成功,给item添加成功class, 用样式标记上传成功。 uploader.on( 'uploadSuccess', function( file ) { $( '#'+file.id ).addClass('upload-state-done'); }); // 文件上传失败,现实上传出错。 uploader.on( 'uploadError', function( file ) { var $li = $( '#'+file.id ), $error = $li.find('div.error'); // 避免重复创建 if ( !$error.length ) { $error = $('<div class="error"></div>').appendTo( $li ); } $error.text('上传失败'); }); // 完成上传完了,成功或者失败,先删除进度条。 uploader.on( 'uploadComplete', function( file ) { $( '#'+file.id ).find('.progress').remove(); }); //上传检查 uploader.on('error', function(handler) { if(handler=="Q_EXCEED_NUM_LIMIT"){ alert("超出最大张数"); } if(handler=="F_DUPLICATE"){ alert("文件重复"); } }); }); </script> </head> <body> <div id="uploader-demo"> <!--用来存放item--> <div id="fileList" class="uploader-list"></div> <div id="filePicker">选择图片</div> </div> </body> </html>
@Controller public class Upload { @RequestMapping("/testup.do") public ModelAndView testup(HttpServletRequest filetoup) throws IOException{ FileOutputStream fos = null; Properties props = new Properties(); try { //脑洞大开,用properties文件控制循环次数,这不重要,可忽略 props.load(DirMaker.class.getClassLoader().getResourceAsStream("config.properties")); } catch (IOException e) { e.printStackTrace(); } //为了存放新建的file List<File> list = new ArrayList<File>(); List<String> listPicPath = new ArrayList<String>(); // Integer.parseInt(props.getProperty("createPicNum")) try { for (int i = 0; i <11; i++) { //上传的图片的命名有规范,所以这里是日期加UUID,这也不不是问题关键,忽略 File f = new File("/" + DirMaker.refFormatNowDate() + "/" + DirMaker.refFormatNowDate() + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"); list.add(f); fos = new FileOutputStream(list.get(i)); //这里封装了输入流转化为byte的方法 byte[] data = ToByte.toByteArray(filetoup.getInputStream()); fos.write(data); fos.flush(); //为了把每个上传的图片的路径放到list里面 listPicPath.add(list.get(i).getAbsolutePath()); } } catch (Exception e) { } finally { if (fos != null) { try { fos.close(); } catch (Exception e2) { e2.printStackTrace(); } } } ModelAndView mav = new ModelAndView("success"); //需要返回图片的路径给前端 mav.addObject("backdata", listPicPath); return mav; } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你前端的名字都是一样的,直接参数用
CommonsMultipartFile[]