`

简单文件上传工具类

    博客分类:
  • java
阅读更多
   使用org.apache.commons.fileupload.servlet.ServletFileUpload上传文件:
  * 创建FileUploadUtil工具类
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUploadUtil{
private ServletFileUpload servletFileUpload;
private String filePath;//文件保存路径
private int fileIndex=0;
private long singleSizeMax = 2*1024*1024;//上传单个文件大小上额2M
private long sizeMax = 20*1024*1024;//总上传大小上额 20M
private List<FileBean> fileList;//解析后的需要保存的文件集合
private List upFileList;//上传的文件集合
private String fileNameStart = "";
private Map<String,Object> paramMap = new HashMap<String,Object>();
private HttpServletRequest request;

/**
* 重置相关信息
*/
public void refresh() throws Exception{
this.fileList = new ArrayList();
this.paramMap.clear();
this.fileIndex = 0;
this.fileNameStart = "";
}
/**
* 初始化
*/
public void init(HttpServletRequest request) throws Exception{
this.refresh();
this.servletFileUpload.setSizeMax(this.sizeMax);
fileList = new ArrayList<FileBean>();
this.upFileList = new ArrayList();
//解析request中相关信息
List<FileItem> fileItemList = this.servletFileUpload.parseRequest(this.request);
Iterator iterator = fileItemList.iterator();
while(iterator.hasNext()){
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
//是字段
this.processFormField(item);
}else{
//是file
this.upFileList.add(item);
}
}
}
/**
* 解析普通表单字段
*/
public void processFormField(FileItem item){
try{
String filedName=item.getFieldName().trim().toUpperCase();
String filedValue=item.getString(this.getServletFileUpload().getHeaderEncoding());
if(paramMap.get(filedName)!=null){
paramMap.put(filedName,paramMap.get(filedName)+","+filedValue);
}else{
paramMap.put(filedName,filedValue);
}
 
}catch(Exception ex){
//解析普通表单字段出错
}
}
/**
    * 取上傳文件的原始文件名稱(含後綴)
    * @param pathName
    * @return
    */
public String getUploadFileName(String pathName){
   int startIndex = pathName.lastIndexOf("\\");
   if(startIndex<0) startIndex=0;
   int endIndex = pathName.length();
   return pathName.substring(startIndex+1,endIndex);
}
/**
    * 生成不重複的保存文件名
    * @param pathName
    * @return
    */
public String getSaveFileName(String pathName){
   fileIndex++;
   java.util.Date date=new java.util.Date();
   java.text.DateFormat ft = new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS");
   String dateStr = ft.format(date);
   return this.getFileNameStart()+dateStr+"_"+String.valueOf(fileIndex)+"."+IoUtils.getFileType(pathName);
}
/**
    * 解析上传的文件
    * @param pathName
    * @return
    */
public FileBean processUploadedFile(FileItem item) throws Exception{
   String fileName = getUploadFileName(item.getName());
   String newName  = getSaveFileName(item.getName());
   String fileType = IoUtils.getFileType(item.getName());
   File newFile = new File(this.filePath + newName);
   item.write(newFile);
   FileBean fileBean = new FileBean();
   fileBean.setFileName(fileName);
   fileBean.setFileSize(item.getSize());
   fileBean.setFileType(fileType);
   fileBean.setContentType(item.getContentType());
   fileBean.setPathName(newName);
   fileBean.setFieldName(item.getFieldName());
  return fileBean;
}
/**
* 數據回滾
* @throws java.lang.Exception
*/
public void rollBack()throws Exception{
   this.delete(fileList);
   this.fileList = null;
   this.upFileList=null;
}
/**
* 刪除文件
* @param filePath
* @throws java.lang.Exception
*/
public void delete(String filePath) throws Exception{
   IoUtils.deleteFile(this.filePath+filePath);
}
/**
* 刪除文件
* @param fileList
* @throws java.lang.Exception
*/
public void delete(List fileList) throws Exception{
   String fileNames="";
   if(fileList!=null && fileList.size()>0){
   for(int i=0;i<fileList.size();i++){
   FileBean file = (FileBean)fileList.get(i);
   fileNames += filePath+file.getPathName()+",";
   }
   IoUtils.deleteFile(fileNames);
   }
}

//取值的一些方法

/**
* 取字段值
* @param name
* @return
*/
public String getParameter(String name){
   if(paramMap.get(name.toUpperCase())!=null){
   return (String) paramMap.get(name.toUpperCase());
   }else{
   return null;
   }
  
}
/**
* 提取所有上传的文件
* @author : qinzhanxing
* @date : Nov 13, 2009 3:27:07 PM
* @return
*/
public List<FileBean> getFiles(){
return fileList;
}
/**
* 批量文件保存(按字段名分組)
* @param nameStartsWith 
* @param rollBack 當某個文件出錯是否回滾(刪除所有已經上傳的文件,竎throws Exception)
* @return list+FileBean
* @throws java.lang.Exception
*/
public List<FileBean> getFilesByName(String nameStartsWith,boolean rollBack)throws Exception{
   //filePath = request.getContextPath()+filePath;
this.save(rollBack);
nameStartsWith = nameStartsWith.trim();
   List namefileList = new ArrayList();
   for(FileBean file:fileList){
String fieldName = file.getFieldName().trim();
log.debug("fieldName="+fieldName);
if(fieldName.startsWith(nameStartsWith)){
namefileList.add(file);
}
   }
   return namefileList;
}
}
  * 使用实例:
FileUploadUtil fuTool = new FileUploadUtil();
fuTool.setServletFileUpload(this.getServletFileUpload());
fuTool.setSizeMax(this.getFileMaxSize());
fuTool.setFilePath(this.getFilePath());
fuTool.init(request);
fuTool.save(true);

String parameterValue = fuTool.getParameter("parameterName");
for(FileBean file : fuTool.getFiles()){

}
分享到:
评论
1 楼 liusp_eye 2011-09-30  
你这类save方法在哪呢》

相关推荐

    java基于commons文件上传工具类

    下面我们将深入探讨如何使用Apache Commons FileUpload创建一个基于Java的文件上传工具类。 首先,我们需要引入Apache Commons FileUpload和Apache Commons IO库。这两个库可以通过Maven或Gradle添加为依赖,或者...

    Java使用NFS实现上传、下载、读取文件工具类

    封装性:工具类封装了NFS相关的复杂连接、认证和I/O操作细节,使得业务层代码无需关心底层通信协议,只需通过简单API即可操作远程文件。 可配置性:允许灵活配置NFS服务器地址、挂载点以及其他相关参数,使工具类...

    图片的上传下载及工具类

    // 实现文件上传逻辑 } public static void downloadFile(String filePath, HttpServletResponse response) throws IOException { // 实现文件下载逻辑,设置响应头并输出文件流 } } ``` 使用这个工具类,...

    文件上传所需要的工具包(Apache 公司)

    在文件上传过程中,当`FileItem`对象被解析出来后,可以借助Commons IO的工具类将其保存到服务器的指定位置,确保文件安全无误地存储。 以下是一些使用Apache Commons FileUpload和Commons IO进行文件上传的关键...

    SFTP上传下载文件工具

    "SFTP上传下载文件工具"通常指的是支持SFTP协议的软件应用,这些应用使得用户能够方便地在本地计算机和远程服务器之间进行文件的上传和下载。描述中提到的"可直接文件夹传输"功能,意味着这款工具不仅支持单个文件的...

    Java文件上传代码(有原生代码,还有封装后的工具类,每行都有注释,通俗易懂,小白学习必备,带有简易项目)

    在你的控制器或服务类中,调用封装好的文件上传工具类,如下所示: ```java @PostMapping("/upload") public ResponseEntity&lt;String&gt; handleFileUpload(@RequestParam("file") MultipartFile file) { boolean ...

    文件上传工具

    文件上传工具,自己使用的可以分享出来大家看看,属于那种比较简单的工具,本地上传

    文件上传下载需要的jar包 java文件上传下载

    2. **Apache Commons IO**: 这个库提供了大量的I/O操作工具类,包括文件读写、流操作等,对于文件下载功能的实现至关重要。例如,`FileUtils`类可以方便地进行文件的复制、移动和删除。 3. **Servlet API**: 在Java...

    c#文件上传下载

    虽然在处理简单的文件上传下载时,我们通常使用ASP.NET的控件或HTTP响应,但如果你需要更底层的控制,比如模拟浏览器行为或自定义HTTP头部,HTTPWebRequest就非常有用。例如,你可以用它来发起一个POST请求来上传...

    php多文件上传类.zip

    总的来说,"php多文件上传类.zip" 提供了一个强大的工具,帮助开发者轻松应对多文件上传的挑战。通过理解和运用这个类库,你可以更好地优化你的PHP项目,提升用户体验,同时保证上传过程的安全性和稳定性。

    基于springboot的FtpUtil工具类.zip

    总的来说,基于SpringBoot的FtpUtil工具类为我们提供了一种便捷的方式,通过简单的调用即可实现FTP文件操作,大大简化了开发流程。配合提供的项目源码和说明,无论是初学者还是经验丰富的开发者,都能从中受益,提高...

    用于文件上传的有关jar包

    接下来,`commons-io-1.3.2.jar`是Apache Commons IO库的一部分,这个库提供了各种IO操作的实用工具类。在处理文件上传时,`commons-fileupload`库会依赖`commons-io`来执行实际的文件读写操作。例如: 1. 文件复制...

    java上传并读取excel工具类

    1. **文件上传**: 在Java Web应用中,文件上传通常涉及HTTP请求和Servlet。用户通过表单提交文件时,服务器端的Servlet会接收到`Part`对象,代表上传的文件。我们可以遍历这些`Part`对象,将它们转换为`File`。这...

    PHP文件上传类,PHP文件上传类

    这个"PHP文件上传类"就是这样一个工具,它对PHP的文件上传功能进行了封装,使得开发者只需简单设置参数即可实现文件上传。 1. **文件上传基础** - PHP中的文件上传是通过`$_FILES`全局数组来处理的,它包含了关于...

    Jsp文件上传下载(工具类源码)

    commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%&gt; &lt;!DOCTYPE ...

    常用Java工具类

    3. **文件上传工具类**:文件上传是Web应用中的常见功能,Java提供了Servlet API来处理文件上传请求。Apache的Commons FileUpload库提供了一套方便的工具类,可以解析多部分请求,将文件保存到服务器。这类工具类...

    基于Java的的文件图片上传-分片上传-断点续传-秒传java源码.zip

    基于Java的的文件图片上传-分片上传-断点续传-秒传...5.多选择器多文件上传:通过不同的文件选择器选择不同的文件,最后同时上传,Controller只是简单示意,并没有详细写实现,具体怎么做可参照上面的其它上穿方法。

    淘淘商城07-工具类

    工具类通常会封装这些功能,提供简单的API,例如上传文件、下载文件、列出目录等,简化FTP操作。 3. **HttpClient**: HttpClient是Apache的一个开源库,用于执行HTTP请求。在Java中,使用HttpClient可以发起GET、...

    简单的文件上传

    本示例将讲解如何使用Java Swing库实现一个简单的文件上传功能。Swing是Java提供的用于创建桌面应用程序的图形用户界面(GUI)工具包,它允许我们构建交互式的、具有丰富视觉效果的应用。 标题“简单的文件上传”...

    java操作sftp的工具类(JSch)

    通过调用`SftpUtil.uploadFile()`方法,可以轻松地实现SFTP文件上传。 总之,JSch库为Java开发者提供了一个强大的工具,使得与SFTP服务器交互变得简单而直观。结合`SftpUtil`工具类,可以方便地集成SFTP操作到Java...

Global site tag (gtag.js) - Google Analytics