一.提交表单的<form> method属性必须为post 并且添加enctype="multipart/form-data" 属性
前台:
<td>上传资质:</td>
<td>
<input type="file" name="upload">
</td>
UploadUtils工具类
package com.home.utils;
import java.util.UUID;
/**
* 文件上床的工具类
* @author Administrator
*
*/
public class UploadUtils {
/**
* 传入文件名称,返回唯一的名称
* @param filename
* @return
*/
public static String getUUIDName(String filename){
//先查找 从后往前找
int index = filename.lastIndexOf(".");
//截取后缀名
String lastname = filename.substring(index,filename.length());
//System.out.println(filename);
//唯一字符串
String uuid = UUID.randomUUID().toString().replace("-", "");//默认带有-
return uuid+lastname;
}
public static void main(String[] args) {
String filename = "gril.jsp";
System.out.println(getUUIDName(filename));
}
}
domain等文件中添加文件上传路径属性
WEB层代码(连同增加客户一起)
/**
* 文件上传,需要在Action类中定义成员的属性,命名是有规则的!!
* private File upload; //表示要上传的文件(与前台name一致) io包的File类
* private String uploadFileName; //表示上传文件的名称(没有中文乱码--已解决)
* private String uploadContentType;//表示上传文件的MIME类型
* 提供set方法,拦截器就注入值了
*/
private File upload;
private String uploadFileName;
private String uploadContentType;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String save() throws IOException{
//做文件的上传,说明用户选择了上传的文件
if (uploadFileName!=null) {
//打印
//System.out.println("文件名称:"+uploadFileName);
System.out.println("文件类型:"+uploadContentType);
//把名称处理一下
String uuidname = UploadUtils.getUUIDName(uploadFileName);
//把文件上传到D:\\Tomcat8.0\\webapps\\upload
String path = "D:\\Tomcat8.0\\webapps\\upload\\";
//创建file对象
File file = new File(path+uuidname);
//简单方式
FileUtils.copyFile(upload, file);//导org.apache.commons.io的包
//把文件上传的路径,保存到客户表中
customer.setFilepath(path+uuidname);
}
customerService.save(customer);
return "save";
}
**注
1.文件大小非常有限(默认2097152为2M),可以自行设置
在struts.xml文件中添加
<!-- 设置上传文件总大小 -->
<constant name="struts.multipart.maxSize" value="20971520"></constant>
2.也可以设置允许的扩展名
在struts.xml文件中的上传文件action标签中添加
<!-- 引入默认拦截器 -->
<interceptor-ref name="defaultStack">
<!-- 决定上传文件的类型 -->
<param name="fileUpload.allowedExtensions">.jpg,.txt</param>
</interceptor-ref>