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);
到此为止.有问题,请跟贴.希望你跟贴的时候,世界末日还没到来!