单文件上传:一.input标签
二.ajax 1. 按照顺序引入先引入jquery的js,再引入ajaxfileupload的js,后者的js依赖前者的js
2.
$.ajaxFileUpload({
url : '${pageContext.request.contextPath}/AjaxUpload/upload', //action的路径
secureuri : false,//一般设置为false
fileElementId : 'upload',//文件上传标签的id属性
dataType : 'json',//返回值类型 一般设置为json
success : function(data, status){ //服务器成功响应处理函数
alert(data.message);
},
error: function (data, status, e){ //服务器响应失败处理函数
alert("上传图片失败!");
}
});
三.action @Namespace("/AjaxUpload") @ParentPackage("struts-default") 1.属性+get、set方法
private File pic;//命名要与标签的name属性一致
private String picFileName;//在上面的属性后面加上FileName
2.方法,不需要跳转页面
通过FileUtils.copyFile(File,File)方法上传文件
@Action(value="upload")
public void upload() throws IOException{
String savePath="E:/java/tomcat/apache-tomcat-7.0.42/webapps/img/";//图片保存路径
FileUtils.copyFile(pic, new File(savePath+picFileName)); //上传图片,需要common-iojar包
HttpServletResponse response = ServletActionContext.getResponse();//获取response
HttpServletResponse response = ServletActionContext.getResponse();//获取response
Writer writer = response.getWriter();//获取输出流
String str="{"message":"图片添加成功"}";
writer.write(str.getBytes("utf-8"));//传一个json字符串到前端,中文设置编码
writer.close();//关闭输出流
}
通过io流上传文件
@Action(value="upload")
public void upload() throws IOException{
String savePath="E:/java/tomcat/apache-tomcat-7.0.42/webapps/img/";//图片保存路径
/*io流上传文件*/
OutputStream out = new FileOutputStream(new File(savePath+picFileName));//获取输出流
FileInputStream in = new FileInputStream(pic);//获取输入流
byte[] b=new byte[1024];//缓冲区
int len;//记录每次读取的长度
//读取文件然后将文件写到规定地址
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
HttpServletResponse response = ServletActionContext.getResponse();//获取response
HttpServletResponse response = ServletActionContext.getResponse();//获取response
Writer writer = response.getWriter();//获取输出流
String str="{"message":"图片添加成功"}";
writer.write(str.getBytes("utf-8"));//传一个json字符串到前端,中文设置编码
writer.close();//关闭输出流writer
out.close();//关闭输出流out
in.close();//关闭输入流in
}
多文件上传(部分进行修改):一.input标签 加上mutiple="mutiple"属性
二.action 1.属性类型变为相应的数组类型
private File[] pic;//文件
private String[] picFileName;//文件名
2.对文件上传部分进行循环
for(int i=0;i