/**
* 文件上传
*
* @author cary
* @since 2012-12-19 下午2:22:12
*/
public class FileUploader {
static final String UPLOAD_PATH_KEY = "upload.dir";
private static Logger logger = Logger.getLogger(FileUploader.class);
/**
* 定义允许上传的文件扩展名
*/
private Map<String, String> extMap = new HashMap<String, String>();
/**
* 文件上传目录
*/
private String savePath;
/**
* 文件完整目录
*/
private String saveUrl;
/**
* 空构造器
*/
public FileUploader() {
// 允许上传的文件类型
extMap.put("extName", "gif,jpg,jpeg,png,bmp,xls,xlsx");
}
/**
* @param request 请求对象
* @param upload 被上传的文件
* @param uploadFileName 被上传的文件名
* @param dirName 文件类型对应的路径
* @param maxSize 文件大小阈值
* @return
* @throws IOException
*/
public String[] uploadFile(HttpServletRequest request, File upload, String uploadFileName, String dirName,
Long maxSize) throws IOException {
/**
* 保存上传文件返回信息
*/
String[] infos = new String[2];
/**
* 获取文件上传目录
*/
String extName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1, uploadFileName.length());
infos[0] = this.validateFields(request, extName, dirName, maxSize);
String prefixName = uploadFileName.substring(0, uploadFileName.lastIndexOf("."));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhh24mmss");
String ymd = sdf.format(new Date());
String realName = prefixName + ymd + "." + extName;
/**
* 获取文件全路径
*/
saveUrl = savePath + realName;
if (infos[0].equals("true")) {
saveFile(upload, savePath, realName);
infos[1] = saveUrl;
}
return infos;
}
/**
* 上传验证,并初始化文件目录
*
* @param request 请求对象
* @param extName 扩展名
* @param dirName 子目录名
* @param maxSize 文件大小阈值
* @throws IOException
*/
private String validateFields(HttpServletRequest request, String extName, String dirName, Long maxSize)
throws IOException {
String errorInfo = "true";
// 获取内容类型
String contentType = request.getContentType();
String extType = extMap.get("extName");
int contentLength = request.getContentLength();
String path = ConfigUtil.getString(FileUploader.UPLOAD_PATH_KEY);
savePath = path + "/" + dirName + "/";
File uploadDir = new File(savePath);
if (contentType == null || !contentType.startsWith("multipart")) {
logger.error("请求不包含multipart/form-data流");
return "请求不包含multipart/form-data流";
}
if (extType.indexOf(extName) == -1) {
return "不允许上传的文件类型[" + "." + extName + "]";
}
if (maxSize < contentLength) {
logger.error("上传文件大小超出文件最大大小");
return "上传文件大小超出文件最大大小[" + maxSize + "]";
}
if (!ServletFileUpload.isMultipartContent(request)) {
return errorInfo = "请选择文件";
}
if (!uploadDir.exists()) {// 检查目录
logger.warn("上传目录[" + savePath + "]不存在");
uploadDir.mkdir();
}
if (!uploadDir.canWrite()) {
return "上传目录[" + savePath + "]没有写权限";
}
return errorInfo;
}
/**
* 保存文件
*
* @param upload 待上传文件
* @param savePath 文件存储目录
* @param realName 原始文件名
* @throws IOException
*/
public void saveFile(File upload, String savePath, String realName) throws IOException {
File target = new File(savePath, realName);
FileUtils.copyFile(upload, target);
}
public static void main(String[] args) {
File dirFile = new File("/usr/local/upload/excel");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
}
2.action调用代码
FileUploader fileUploader = new FileUploader();
try {
Long maxSize = getMaxSize();
String[] infos = fileUploader.uploadFile(getRequest(), upload, uploadFileName, EXCEL_DIR, maxSize);
logger.info("upload info:" + infos[0]);
logger.info("upload path:" + infos[1]);
}catch (IOException e) {
logger.error("上传文件发生异常" + e);
}
分享到:
相关推荐
本人一个项目中写的java基于commons文件上传工具类
文件上传工具类,上传文件,上传导入文件到path文件夹下,判断图片大小是否超过要求,上传多张图片到服务器,上传图片到服务器,上传文件(在指定目录下创建年月日目录),上传导入文件到temp文件夹下,删除指定...
Java文件工具类
该工具类使用httpclient进行http or https请求,包括requestbody格式和form表单格式,另外含文件服务器中转上传方法,几乎支持所有常用接口调用,内含详细注释和说明文件,含jar包,及maven方式引用,拿过去直接用吧
java 文件上传工具类 文件及文本数据java 文件上传工具类 文件及文本数据java 文件上传工具类 文件及文本数据
java io 文件上传工具类
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
分片上传文件工具类,对应文章为:https://blog.csdn.net/y534560449/article/details
java上传并读取excel工具类 涉及到MultiFile转FIle 以及多个sheet页
# java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...
java上传文件的java工具类代码,希望大家参考
java上传文件工具类 很全面
java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。
JAVA文件上传工具类-完全封装-在SHH环境下的
Class类工具 \Cookie工具类 \excel读取 工具类\Java如何生成验证码图片和点击刷新验证码\java获取当前月第一天和最后一天,上个月第一天和最后一天\java实现ftp文件的上传与下载\Json工具类 - JsonUtils.java\JS...
使用apache的common-net.jar,实现ftp文件的上传和下载,封装成工具类,方便开发。
java上传文件util包,可直接使用,需将地址改为自己的存储地址,
java验证文件真实格式和编码格式工具类,验证文件的文件格式和文件的编码格式给出正确的文件类型以及编码格式,从此解决文件解析乱码问题的烦恼
java SFTP上传工具类