`
zg973595977
  • 浏览: 11979 次
社区版块
存档分类
最新评论

java各类文件上传总结

    博客分类:
  • java
阅读更多

/**
 * 上传文件类
 */
package com.gootrip.util;

/**
 * @author advance
 * http://www.jq-school.com
 */
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
//Download by http://www.codefans.net
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class UploadHelper {
 
 public final static String separator = "/";
 public final static String split = "_";
 
 protected final Log log = LogFactory.getLog(getClass());

 class FilenameFilterImpl implements FilenameFilter
 {
  private String filter = ".";
  
  public FilenameFilterImpl(String aFilter)
  {
   filter = aFilter;
  }
  
     public boolean accept(File dir, String name)
     {
         return name.startsWith(filter);
     }
 };
 /**
  * 获得当前的文件路径(通过当前日期生成)
  * @param basePath
  * @return
  */
 public static String getNowFilePath(String basePath){
  SimpleDateFormat formater =new SimpleDateFormat("yyyy-MM-dd");
  String pathName = formater.format(new Date());
  File dir = new File(basePath + separator + pathName);
  if(!dir.exists())
   dir.mkdir();
  return pathName;
 }
 
 public static String getNewFileName(String oldFileName){
  oldFileName = oldFileName.replaceAll("'", "").replaceAll("\"", "");
  Calendar date = Calendar.getInstance();
  int hour = date.get(Calendar.HOUR_OF_DAY);
  int minute = date.get(Calendar.MINUTE);
  int second = date.get(Calendar.SECOND);
  if(oldFileName.length()>30)
   oldFileName = oldFileName.substring(oldFileName.length()-30);
  return (new Integer(hour*3600 + minute*60 + second).toString())
     + split + oldFileName;
 }
 
 public static String getThumbFileName(String fileName){
  int pos = fileName.lastIndexOf(".");
  if(pos>=0)
   return fileName.substring(0, pos) + "s" + fileName.substring(pos);
  else
   return fileName + "s";
 }
 
    /**
     * This method checks if the given file exists on disk. If it does it's ignored because
     * that means that the file is allready cached on the server. If not we dump
     * the text on it.
     */
 public void dumpAttributeToFile(String attributeValue, String fileName, String filePath) throws Exception
 {
  File outputFile = new File(filePath + separator + fileName);
  PrintWriter pw = new PrintWriter(new FileWriter(outputFile));
        pw.println(attributeValue);   
        pw.close();
 }
 
  /**
   * 保存文件
     * This method checks if the given file exists on disk. If it does it's ignored because
     * that means that the file is allready cached on the server. If not we take out the stream from the
     * digitalAsset-object and dumps it.
     */
 public void dumpAsset(File file, String fileName, String filePath) throws Exception
 {
  long timer = System.currentTimeMillis();
  
  File outputFile = new File(filePath + separator + fileName);
  if(outputFile.exists())
  {
   log.info("The file allready exists so we don't need to dump it again..");
   return;
  }
  
  FileOutputStream fis = new FileOutputStream(outputFile);
  BufferedOutputStream bos = new BufferedOutputStream(fis);
  
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
  
  int character;
        while ((character = bis.read()) != -1)
        {
   bos.write(character);
        }
  bos.flush();
  
        bis.close();
  fis.close();
  bos.close();
  log.info("Time for dumping file " + fileName + ":" + (System.currentTimeMillis() - timer));
 }

 /**
  * 保存缩略图
  * This method checks if the given file exists on disk. If it does it's ignored because
  * that means that the file is allready cached on the server. If not we take out the stream from the
  * digitalAsset-object and dumps a thumbnail to it.
  */
    
 public void dumpAssetThumbnail(File file, String fileName, String thumbnailFile, String filePath, int width, int height, int quality) throws Exception
 {
  long timer = System.currentTimeMillis();
  log.info("fileName:" + fileName);
  log.info("thumbnailFile:" + thumbnailFile);
  
  File outputFile = new File(filePath + separator + thumbnailFile);
  if(outputFile.exists())
  {
   log.info("The file allready exists so we don't need to dump it again..");
   return;
  }
  
  ThumbnailGenerator tg = new ThumbnailGenerator();
  tg.transform(filePath + separator + fileName, filePath + separator + thumbnailFile, width, height, quality);
  
  log.info("Time for dumping file " + fileName + ":" + (System.currentTimeMillis() - timer));
 }
 
 /**
  * This method removes all images in the digitalAsset directory which belongs to a certain digital asset.
  */
 public void deleteDigitalAssets(String filePath, String filePrefix) throws Exception
 {
  try
  {
   File assetDirectory = new File(filePath);
   File[] files = assetDirectory.listFiles(new FilenameFilterImpl(filePrefix));  
   for(int i=0; i<files.length; i++)
   {
    File file = files[i];
    log.info("Deleting file " + file.getPath());
    file.delete();
   }
  }
  catch(Exception e)
  {
   log.error("Could not delete the assets for the digitalAsset " + filePrefix + ":" + e.getMessage(), e);
  }
 }

}

分享到:
评论

相关推荐

    基于Java的FastDFS大文件上传与断点续传设计源码

    本源码项目是基于Java的FastDFS大文件上传与断点续传设计,包含36个文件,主要使用Java、JavaScript和CSS编程语言。该项目旨在实现h5与fastdfs之间...系统界面友好,易于操作,适合用于各类大文件上传与断点续传场景。

    java 上传文件,实时获取上传进度.

    在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。在上传大文件时,为了提供更好的用户体验,实时显示上传进度是必不可少的。本篇文章将详细探讨如何在Java环境中实现文件上传并...

    java文件上传实例

    在Java编程领域,文件上传是一项常见的任务,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。在这个“java文件上传实例”中,我们将深入探讨如何实现这一功能,并结合拦截器来增强上传的安全性和可...

    文件上传jar包.zip

    总结来说,"文件上传jar包.zip"是一个可能包含用于处理Java环境下的文件上传功能的库。它简化了Servlet API的使用,提供了处理多部分表单数据的工具,并且可能包含了额外的安全措施,帮助开发者构建安全可靠的文件...

    sftp常用方法汇总,支持流上传,文件上传,下载,删除各类方法

    sftp常用方法汇总,支持流上传,文件上传,下载,删除各类方法,使用时候秩序new SFtpUtils(),压入对应的sftp连接参数即可调用相应参数。

    fastdfs分布式文件上传

    总结起来,这个基于FastDFS的文件上传Demo展示了如何结合前端AJAX技术和后端Java,利用FastDFS实现高效、稳定的文件上传服务。对于需要处理大量文件的互联网应用来说,这样的解决方案既保证了文件存储的可靠性和性能...

    js jsp 文件上传

    文件上传功能是Web应用中常见的需求,它允许用户上传图片、文档等各类文件到服务器。本项目利用JavaScript(简称JS)作为前端处理,JavaServer Pages(简称JSP)作为后端处理,实现了文件上传的功能。通过这个项目,...

    文件上传(中文架包)

    在Java编程中,文件上传是一项常见的任务,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。然而,当处理包含中文字符的文件名时,如果没有进行适当的处理,可能会出现乱码问题,这主要是由于字符...

    基于Java的网络文件传输系统研究与设计

    同时,系统支持多种文件类型的在线预览,如视频、音频、图像、文档(Word、txt、PDF、Excel等),极大地提升了用户体验,用户无需离开系统即可查看各类文件内容。 在开发过程中,开发人员使用Eclipse作为集成开发...

    文件上传所需要的jar包

    在Java Web开发中,文件上传是一项常见的功能,用于让用户上传图片、文档等各类文件到服务器。为了实现这个功能,开发者通常需要引入特定的库或jar包。标题和描述提到的"文件上传所需要的jar包"正是指这些必要的依赖...

    Web Uploader java后台实现

    在Web开发中,文件上传功能是一项常见的需求,尤其是在社交、电商、教育等各类网站中。本文将详述如何使用Java来实现Web Uploader的后台处理,以满足前端上传文件到服务器的需求。 首先,理解Web Uploader的概念。...

    commons-fileupload 文件上传 图片上传 demo

    在Java开发中,文件上传是一项常见的功能,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload 就是一个专门用于处理HTTP请求中的多部分数据(multipart/form-data),即文件...

    基于jQuery的File Upload功能丰富的文件上传设计源码

    该项目是一款基于jQuery实现的丰富...该组件还具备跨域上传、分块上传和断点续传等特性,适用于多种服务器端平台,如Google App Engine、PHP、Python、Ruby on Rails、Java等,是满足各类文件上传需求的有效解决方案。

    大文件分片上传

    在IT行业中,大文件上传是一项常见的需求,尤其是在云存储、社交媒体和在线协作平台等领域。大文件分片上传技术就是为了解决单次上传文件过大导致的网络延迟、传输中断等问题而设计的一种高效策略。以下是对这个主题...

    ftp文件上传源代码

    本资源提供了FTP文件上传的源代码,适用于上传图片等各类文件,这对于开发者来说是一个宝贵的参考资料。 FTP上传的基本流程包括以下步骤: 1. **连接**:客户端通过TCP建立与FTP服务器的连接,通常使用21号端口。...

    java1071网络文件传输系统2借鉴.pdf

    文件传输是互联网应用的核心功能之一,它使得人们能够方便地分享文本、图像、音频和视频等各类数据。尽管现有的FTP(File Transfer Protocol)服务能满足基本的文件传输需求,但其功能局限性和安全性问题日益显现,...

    文件上传用到的jar包

    在Java开发中,文件上传是一项常见的功能,尤其是在Web应用程序中,用户可能需要上传图片、文档等各类文件。这里提到的"文件上传用到的jar包"是针对Java环境下的文件上传实现,具体使用了Apache Commons FileUpload...

    struts2文件上传教程

    Struts2文件上传是一个常见的需求,在Web应用中,用户可能需要上传图片、文档等各类文件。Apache Struts2框架提供了方便的文件上传功能。本教程将详细介绍如何在Struts2中实现文件上传。 首先,我们需要在项目的WEB...

    网盘源码-实现部分功能(JAVA)

    2. **文件上传**:用户可以从本地计算机选择文件上传到云端,这需要处理文件的读取、传输和存储。 3. **文件下载**:用户可以下载已存储在网盘上的文件,涉及文件的检索和传输。 4. **文件管理**:包括文件的移动、...

Global site tag (gtag.js) - Google Analytics