js上传控件 plupload 使用记录
最近一个项目需要使用一个上传控件进行多图片上传,给用户更好的体验,找到了plupload,用了一下感觉还是不错的,
1.从官网上 可以获得例子 ,我集成到了jsp,如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><link media="screen" href="css/jquery-ui.min.css" rel="stylesheet" type="text/css"><link media="screen" href="css/jquery.ui.plupload.css" rel="stylesheet" type="text/css"><script src="js/jquery.js" type="text/javascript"></script><script charset="UTF-8" src="js/jquery-ui.min.js" type="text/javascript"></script><script charset="UTF-8" src="js/plupload.full.min.js" type="text/javascript"></script><script charset="UTF-8" src="js/jquery.ui.plupload.min.js" type="text/javascript"></script><script src="js/zh_CN.js" type="text/javascript"></script><script type="text/javascript">$(function() {$("#uploader").plupload({// General settingsruntimes : 'html5,flash,silverlight,html4,html',url : "file/upload",// Maximum file sizemax_file_size : '20mb',chunk_size: '10mb',// Resize images on clientside if we canresize : {width : 1000,height : 1000,quality : 90,crop: true // crop to exact dimensions},// Specify what files to browse forfilters : [{title : "Image files", extensions : "jpg,gif,png"},{title : "Zip files", extensions : "zip,avi"}],// Rename files by clicking on their titlesrename: true,// Sort filessortable: true,// Enable ability to drag'n'drop files onto the widget (currently only HTML5 supports that)dragdrop: true,// Views to activateviews: {list: true,thumbs: true, // Show thumbsactive: 'thumbs'},// Flash settingsflash_swf_url : 'js/Moxie.swf',// Silverlight settingssilverlight_xap_url : 'js/Moxie.xap'})});</script></head><body><div id="uploader"></div></body></html>
2.导入相应的js文件,与css美化 ,结构如下:

3.到了这一步,基本上这个控件的样子出来了,下面是后台获取上传文件源码 (ps:本人用的springmvc) 上传文件用的
spring写好的 MultipartHttpServletRequest 这个类,首先,spring-mvc配置
MultipartHttpServletRequest 的视图配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="104857600"/><property name="maxInMemorySize" value="4096"/></bean>
4.控制器实现上传
package com.springfreemark.web.controller;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.springframework.stereotype.Component;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;@Component@RequestMapping("/file/")public class UploadController extends BaseController {String UPLOADDIR="F:/upload";@RequestMapping("upload")public void exec(HttpServletRequest request,HttpServletResponse response){MultipartHttpServletRequest multiReq = (MultipartHttpServletRequest) request;HashMap<String, MultipartFile> hashMap=(HashMap<String, MultipartFile>) multiReq.getFileMap();InputStream inputStream=null;FileOutputStream outputStream=null;try {for (Entry<String,MultipartFile> entry : hashMap.entrySet()) {MultipartFile file = entry.getValue();inputStream = file.getInputStream();File fileDir= new File(UPLOADDIR);if(!fileDir.exists()||!fileDir.isDirectory()){fileDir.mkdir();}File uploadFile= new File(UPLOADDIR+"/"+System.currentTimeMillis()+file.getOriginalFilename());if(uploadFile.exists()){uploadFile.delete();}uploadFile.createNewFile();outputStream =new FileOutputStream(uploadFile);byte[] bs = new byte[1024];int len=0;while ((len=inputStream.read(bs))>0) {outputStream.write(bs);}System.out.println(file.getOriginalFilename()+"上传成功");}response.getWriter().print("全部上传成功");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(inputStream!=null){inputStream.close();}if(outputStream!=null){outputStream.close();}} catch (Exception e) {// TODO: handle exception}}}}
至此,大功告成!

附件列表
js上传控件 plupload 使用记录的更多相关文章
- jquery文件上传控件 Uploadify 问题记录
Uploadify v3.2.1 首先引用下面的文件 <!--上传控件 uploadify--> <script type="text/javascript" s ...
- 前端上传控件plupload总结
plupload是一个单图和多图上传控件: 属性和方法介绍,参考以下博客: https://www.cnblogs.com/2050/p/3913184.html 这里直接贴出JS代码,细到爆的注释, ...
- 纯js上传控件——fineuploader
fineuploader是一款基于ajax实现文件上传的插件,具有以下有点: A:支持文件上传进度显示. B:文件拖拽浏览器上传方式 C:Ajax页面无刷新. D:多文件上传. F:跨浏览器. E:跨 ...
- jquery.html5uploader.js 上传控件
插件地址:http://blog.csdn.net/never_say_goodbye/article/details/8598521 先上个效果图: 相比来说,效果还是很不错的 使用MVC3做服务器 ...
- plupload上传控件错误exec(this.uid, component, action, args)
plupload上传控件错误exec(this.uid, component, action, args) --undefined is not a function 原因:Flash元素隐藏后调用控 ...
- Js获取file上传控件的文件路径总结
总结一个获取file上传控件文件路径的方法 firefox由于保护机制只有文件名,不能获取完整路径. document.getElementById('file').onchange = functi ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- 基于AngularJs的上传控件-angular-file-upload
今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...
随机推荐
- 智普教育Python视频教程之入门基础篇,python笔记
智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...
- SQLAlchemy中filter()和filter_by()的区别
1.filter引用列名时,使用“类名.属性名”的方式,比较使用两个等号“==” 2.filter_by引用列名时,使用“属性名”,比较使用一个等号“=” 3.在使用多条件匹配的时候,filter需要 ...
- jquery ajax 不执行赋值,return没有返回值的解决方法
大家先看一段简单的jquery ajax 返回值的js 复制代码 代码如下: function getReturnAjax{ $.ajax({ type:"POST", url:& ...
- iOS:LKDBHelper实体对象映射数据库-第三方框架(在FMDB的基础上进行二次封装)
一 插件简介: 其github地址:https://github.com/li6185377/LKDBHelper-SQLite-ORM 全面支持 NSArray,NSDictionary, Mode ...
- JSP和Servlet中的几个编码的作用及原理
首先,说说JSP和Servlet中的几个编码的作用. 在JSP和Servlet中主要有以下几个地方可以设置编码,pageEncoding="UTF-8".contentType=& ...
- 流畅的python第十章序列的修改,散列和切片学习记录
只要实现了__len__和__getitem__两个方法即可将该类视为序列. 切片原理 动态存取属性 如果实现了__getattr__方法,也要定义__setattr__方法,以防对象行为不一致
- 解析PHP中如何将数组变量写入文件
在用PHP记录日志,或者是 Ajax 请求出错想要 debug 的时候.我们一般都会将信息写入到一个指定的文件当中.然后根据相应的信息来处理问题.比如笔者最喜欢在用 Ajax 取不到数据的时候,在PH ...
- OO软件设计说明书结构
1 概述 系统简述.软件设计目标.参考资料.修订版本记录 这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的.同时,对于非功能性的需求例如性能.可用性等,亦需提 ...
- 30分钟Git命令“从入门到放弃”
git 现在的火爆程度非同一般,它被广泛地用在大型开源项目中,但是初学者非常容易“从入门到放弃”,各种命令各种参数,天哪,宝宝要吓哭了.实际上新手并不需要了解所有命令的用途,学习是需要一个循序渐进的过 ...
- 记一次vue2项目部署nginx静态文件404解决过程
github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...