一、在head标签中引入js文件(包括jquery和uploadify的js文件)
<script type="text/javascript" src="../js/jquery.1.11.1.min.js"></script>
<script type="text/javascript" src="../uploadify/jquery.uploadify.min.js"></script>
二、js代码,属性的含义请执行参考官方文档
<script type="text/javascript">
$(function(){
var id = $("#sessionId").val();
alert(id);
$("#uploadify").uploadify({
swf:'../uploadify/uploadify.swf',
uploader:'../io/upload.do;JSESSIONID='+id,//网上查阅追加sessionId能解决使用火狐浏览器的302问题,但是我这里并没有解决,正在找方法。。。。
buttonCursor:'hand',
buttonText:'浏览',
fileSizeLimit:'2MB',
uploadLimit:'5',
fileTypeDesc:'请选择jpg格式的图片',
fileTypeExts:'*.jpg',
method:'Post',
multi:true,
auto:false,
removeCompleted:true,
preventCaching:true,
removeTimeout:'2',
});
});
</script>
三、jsp代码
<input type="file" id="uploadify" name="file">
<input type="hidden" id="sessionId" value="<%=request.getSession().getId()%>">
<p>
<a href="javascript:$('#uploadify').uploadify('upload','*')">上传</a>
<a href="javascript:$('#uploadify').uploadify('cancel','*');">取消上传</a>
</p>
四、后台上传代码
@RequestMapping("/upload.do")
public String upload(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
//图片保存路径
String savePath = request.getServletContext().getRealPath("/images");
//允许上传的图片格式
List<String> fileTypes = new ArrayList<String>();
fileTypes.add("jpg");
fileTypes.add("jpeg");
fileTypes.add("bmp");
fileTypes.add("png");
fileTypes.add("gif");
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String,MultipartFile> fileMap = multipartRequest.getFileMap();
for(Map.Entry<String, MultipartFile> entity : fileMap.entrySet()){
MultipartFile file = entity.getValue();
//获取文件名(带后缀)
String fileName = file.getOriginalFilename();
//获取文件后缀
String ext = fileName.substring((fileName.lastIndexOf(".")+1)).toLowerCase();
//新的文件名:当前时间戳+后缀
String newFileName = String.valueOf(System.currentTimeMillis()+"."+ext);
//保存图片到服务器
if(fileTypes.contains(ext)){
//保存图片路径,按月来创建文件夹
SimpleDateFormat df = new SimpleDateFormat("yyyyMM");
savePath += "/"+df.format(new Date());
File fileDir = new File(savePath);
if(!fileDir.exists()){
fileDir.mkdirs();
}
//file.transferTo(fileDir);
try {
FileOutputStream out = new FileOutputStream(savePath+"/"+newFileName);
InputStream in = file.getInputStream();
byte[] buffer = new byte[1024];
int length = 0;
while((length = in.read(buffer))>0){
out.write(buffer, 0, length);
}
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return null;
}