文件上传

来源:互联网 发布:ps淘宝主图尺寸大小 编辑:程序博客网 时间:2024/06/05 08:15
(一)文件上传步骤
1.在提交的form表单中的enctype设置为复合数据类型 即:enctype="multipart/form-data"


2.在action中定义三个属性 file的name去名字:<s:file name="img" label="附件1" />


file img,String imgFileName,String imgContenType


3.配置action 写方法实现文件上传  在WebRoot路径下新建文件夹"file"
得到需要存放的路径
String path = ServletActionContext.getServletContext().getRealPath("/file");
此处是多文件 属性都是数组,如果要实现多文件上传就可以这样做  单个就去掉for循环就ok了
for (int i = 0; i < img.length; i++) {
  File target = new File(path, df.format(new Date()) + imgFileName[i].substring(imgFileName[i].lastIndexOf(".")));
File target = new File(path, imgFileName[i]);
FileUtils.copyFile(img[i], target);
}
(二)文件下载 


1.新建属性:
装载所有文件名称
    private String[] fileNames;
private String fileName;
2.需要在action中定义一个返回值为InputStream的方法,并且方法名称需要如getTargetFile这种命名规则,即:get+一个名称,一个名称的首写字母必须是大写的
public InputStream getInputStream() {
//设置响应的报头信息(中文问题的终极解决办法)        
            ServletActionContext.getResponse().setHeader("content-disposition", "attachment;fileName="+URLEncoder.encode(downloadFile,"UTF-8").toString());
//判断是否为空 没有数据
if(fileName==null || fileName.isEmpty()) return null;
String path = ServletActionContext.getServletContext().getRealPath("/file");
try {
return new FileInputStream(new File(path, fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
3.加载数据到fileNames;
public String fileList() {
String path = ServletActionContext.getServletContext().getRealPath("/file");
fileNames = new File(path).list();
return "success";
}
配置常量:默认文件保存的目录
<constant name="struts.multipart.saveDir" value="c:\\tmp\\"></constant>
上传文件的大小限制
<constant name="struts.multipart.maxSize" value="2000000"></constant>
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">100000</param>
上传文件后缀类型
       <param name="fileUpload.allowedTypes">text/plain,image/pjpeg,image/png,image/jpeg,image/x-png</param>
</interceptor-ref>
0 0
原创粉丝点击