文件上传插件uploadify的应用
官网:http://www.uploadify.com/,里面的doc写的不错,有实际的例子来对各个参数的说明
下面简单说一下spring mvc 对此插件的应用
1) 在Web.xml的配置
需要在web.xml添加multipart-config,如下所示
AcrWeb
org.springframework.web.servlet.DispatcherServlet
1
52428800
52428800
0
2) 在spring的application.xml(名字不一定是application)的配置
需要在该配置文件下添加一个如下的bean
3) 在jsp页面中需要引入一些相关的该插件的包
4) 定义一个选择文件的input框
上传apk
5) Input file与插件进行绑定
代码如下
$("#apk_upload").uploadify({
swf: "",
//cancelImg : "",
uploader: "/acr/admin/app/apkupload",
fileObjName: "file",//对应着文件输入框
width:300,
buttonText: '
',
// onInit: function () { $(".uploadify-queue").hide(); },
//removeCompleted : false,
onUploadSuccess : function(file, data, response) {
$("#apkUrl").val(data);
},
onUploadError : function(file, errorCode, errorMsg, errorString) {
alert('文件 ' + file.name + ' 上传失败: ' + errorString);
}
});
注意:该插件的uploadify.swf文件时放入到项目的某一个文件下面
Uploader的值对应的是url,该值映射到了springmvc的一个方法,该方法是文件上传的核心,负责把文件写到指定位置的地方去。
6) Spring 后台代码的实现
@RequestMapping(value = "/apkupload", method=RequestMethod.POST)
public @ResponseBody String apkUpload(
@RequestParam MultipartFile file,
Model model,
HttpServletRequest request) throws IOException {
InputStream input = null;
OutputStream output = null;
String root = "H:/file";
//生成了文件名字
String filename = file.getOriginalFilename();
//文件要上传的位置
String fileFullName = buildUpPath(root, filename);
try {
File dir = new File(root);
if(!dir.exists()){
dir.mkdirs();
}
input = file.getInputStream();
output = new FileOutputStream(new File(fileFullName));
//保存文件
IOUtils.copy(input, output);
} catch (Throwable e) {
throw e;
}finally{
IOUtils.closeQuietly(input);
IOUtils.closeQuietly(output);
}
return root+"/"+filename;
}
其中filename对应着步骤5的onUploadSuccess中的data