springmvc文件上传真头疼,网上搜了半天没发现都是TMD的用submit按钮提交到后台的,就没有插件的吗?
刚开始找到个ajaxfileUpload.还可以,单文件上传不错 ,怎么搞的网上百度一下很多.
最后发现了fineUploader 应该是ajaxfileUpload的 升级版 吧?
示例如下:
jsp中:
$(document).ready(function(){ var thumbnailuploader = new qq.FineUploader({ element: $('#addyoujianfujian')[0], request: { endpoint: '${ytu}/integrate/testManger/uploadFileForIE?folder=<%=folder%>&' }, multiple: false, validation: { allowedExtensions: ['jpeg', 'jpg', 'gif', 'png','xls','doc','xlsx','docx','pdf','txt'], sizeLimit: 40960000 // 50 kB = 50 * 1024 bytes16. }, callbacks: { onComplete: function(id, fileName, responseJSON) { if (responseJSON.success) { $("#addyoujianfujian").append(fileName+";"); } } }, debug: true }); });
Fine Uploader 官网:http://fineuploader.com/index.html
java:看这里:https://github.com/Widen/fine-uploader/tree/master/test/fineuploader.
这个地址以后可能还会变动,大家自己在网上百度吧。
但是 我使用的是springMVC的controller,获取不到servercontext.
最后在同事的帮助下单独为IE写了个上传的方法.代码 如下 :
/** * * 方法描述: 上传文件 作 者: chalist 日 期: 2012-11-22-下午04:45:34 * * @param myfiles * @return * @throws IOException * 返回类型: String[] */ public void uploadattachment(String folder, HttpServletRequest request) throws IOException { try { MultipartHttpServletRequest fileRequest = (MultipartHttpServletRequest)request; List<MultipartFile> files = fileRequest.getFiles("qqfile"); for (MultipartFile myfile : files) { String path = myfile.getOriginalFilename(); String fileName = path; InputStream is = myfile.getInputStream(); path = FileManager.T_MAIL_ATTACHMENT_PATH + folder + File.separator + fileName; uploadfiles(path, is);// 上传文件 } } catch (Exception e) { e.printStackTrace(); logger.error("上传文件异常:"+e.getMessage()); } }
测试后发现 文件 能上传了.但是页面上却提示上传失败.最后 发现 这个插件是根据response 回写的内容提示判断文件上传失败与否的,那就好办了,回写个就是了.发现fineuploader其提供的java 文件UploadReceiver含有这样的方法,哈哈正好.
代码如下:
UploadReceiver ur = new UploadReceiver(); ur.writeResponse(resp.getWriter(), null);到此为止.有问题,请跟贴.希望你跟贴的时候,世界末日还没到来!