Java一个文件上传工具类
/**
* 文件上传
*
* @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[];
/**
* 获取文件上传目录
*/
String extName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + , uploadFileName.length());
infos[] = this.validateFields(request, extName, dirName, maxSize);
String prefixName = uploadFileName.substring(, uploadFileName.lastIndexOf("."));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhh24mmss");
String ymd = sdf.format(new Date());
String realName = prefixName + ymd + "." + extName;
/**
* 获取文件全路径
*/
saveUrl = savePath + realName;
if (infos[].equals("true")) {
saveFile(upload, savePath, realName);
infos[] = 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) == -) {
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一个文件上传工具类的更多相关文章
- spring mvc 文件上传工具类
虽然文件上传在框架中,已经不是什么困难的事情了,但自己还是开发了一个文件上传工具类,是基于springmvc文件上传的. 工具类只需要传入需要的两个参数,就可以上传到任何想要上传的路径: 参数1:Ht ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
- 文件上传工具类 UploadUtil.java
package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...
- FastDFS 文件上传工具类
FastDFS文件上传工具类 import org.csource.common.NameValuePair; import org.csource.fastdfs.ClientGlobal; imp ...
- Java 使用 commons-fileupload 实现文件上传工具类
依赖包 文件上传可以使用 Apache 文件上传组件, commons-fileupload, 它依赖于 commons-io commons-io.jar: https://repo1.maven. ...
- PHP封装一个通用好用的文件上传处理类
封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...
- maven工程 java 实现文件上传 SSM ajax异步请求上传
java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...
- java的文件上传和下载 抄袭别人的.在底部有说明.
=======后续 这里采用的是输出流的方式,我电脑装的是windows系统,测试没有问题,但是当把项目放到Linux系统上跑时,就会出现保存位置错误的情况, 指定的路径就会被当做文件名的一部分保存了 ...
- CentOS下安装配置NFS并通过Java进行文件上传下载
1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...
随机推荐
- python判断变量是否为int、字符串、列表、元组、字典等方法
在实际写程序中,经常要对变量类型进行判断,除了用type(变量)这种方法外,还可以用isinstance方法判断: #!/usr/bin/env pythona = 1b = [1,2,3,4]c = ...
- Spark 编程模型(中)
先在IDEA新建一个maven项目 我这里用的是jdk1.8,选择相应的骨架 这里选择本地在window下安装的maven 新的项目创建成功 我的开始pom.xml文件配置 <project x ...
- gz文件最后四位检测
[root@node-0 ~]# ll -rw-r--r-- 1 root root 24048 Nov 29 11:29 install.log 文件大小为24048 [root@node-0 ~ ...
- MySQL数据库索引(中)
上一篇回顾: 1.一个索引对应一颗B+树,所有的真实记录都是存在叶子节点里面的,所有的项目录都存在内节点或者说根节点上. 2.innodb会为我们的表格主键添加一个聚簇索引,如果没有主键的话数据库是会 ...
- linux主机555、644、666、755、777权限详解
linux主机555.644.666.755.777权限详解 发表时间:2014-06-03 05:07 来源:未知 分类:其它代码 作者:岑溪网站开发 点击:次 linux主机555.644.666 ...
- 异步请求fetch之初体验
更好阅读体验可移步我的博客:Blog 导读 传递信息到服务器,从服务器获取信息,是前端发展的重中之重,尤其是现在前后端分离的大前提下,前后端的数据交互是前端的必修科目了.从很久之前到现在,ajax都是 ...
- python入门-列表
列表使用[]来标识 列表和PHP中的数组类似 包括使用和访问方式都是类似 可以用下标索引的方式直接访问 来几个例子,这样看起来才舒服 names = ['baker','pitty','david', ...
- 第一个python抓取单网页的例子
#!/usr/bin/env python # coding=utf-8 import requests from bs4 import BeautifulSoup import pymysql im ...
- python内存泄漏
记录: 一个脚本在连续运行后,使用内存越来越大,在循环后手动添加gc.collect()没有作用. 尝试方法: 去除所有函数中当作参数传入的全局变量 使用全局redis对象,不再当作参数传入 循环末尾 ...
- 02 Tensorflow的安装配置
1 anaconda 64 位,win10 安装 清华大学镜像网络,下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 选择下载文件 ...