SSH环境下实现文件上传
什么是文件上传
将本地文件通过流的形式写到服务器上
文件上传技术
- jspSmartUpload(少用)
- fileupload*(apache commons下的一个子项目)
- Servlet3.0
- struts2框架
- 底层的实现Fileupload,对Fileupload进行封装
##文件上传要素
- 底层的实现Fileupload,对Fileupload进行封装
- 表单的提交方式必须是post
- 表单中需要提供而且这个文件项必须有name属性和值
- 表单的enctype属性必须是multipart/form-data
文件上传代码实现(以crm项目为例)
- 提供文件上传项
-
在CustomerAction中提供三个成员属性,并且提供set方法
- String uploadFileName;//上传的文件名称,前面是表单中的name属性的值+FileName
- String uploadContentType;//上传的文件的类型
- File upload; //上传的文件
-
修改action中的save方法
-
配置文件上传的拦截器
附上UploadUtils源码
import java.util.UUID;
/**
* 文件上传的工具类
* @author jt
*
*/
public class UploadUtils {
/**
* 解决目录下文件名重复的问题
* @param fileName
* @return
*/
public static String getUuidFileName(String fileName){
int idx = fileName.lastIndexOf("."); // aa.txt
String extions = fileName.substring(idx);
return UUID.randomUUID().toString().replace("-", "")+extions;
}
/***
*
* @param uuidFileName
* @return java.lang.String
* @author MXL
* @date 2019/2/3 14:06
*/
public static String getPath(String uuidFileName){
int code1 = uuidFileName.hashCode();
int d1 = code1 & 0xf; // 作为一级目录
int code2 = code1 >>> 4;
int d2 = code2 & 0xf; // 作为二级目录
return "/"+d1+"/"+d2;
}
}