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

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之间...系统界面友好,易于操作,适合用于各类大文件上传与断点续传场景。

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

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

    利用 通达OA 文件上传漏洞上传webshell获取主机权限

    帮客户搭建一个演示环境,用于给领导演示,这里我利用了通达OA11.6文件上传漏洞往靶机上上传了一个webshell,然后通过蚁剑去连接webshell从而获取主机权限。 环境要求: 1.靶机环境win10 2.通达OA版本11.6 3.攻击机...

    Java协同办公OA系统源码

    Java协同办公OA系统源码 前台框架是springboot+freemark+jpa+mybatis+mysql实现的OA自动化办公系统, ...10文件管理:文件上传、新建文件夹、文件分享、文件按图片、文档、压缩包、视频等归档。

    基于微信小程序的校园二手交易平台的源码以及各类文件

    自己写的微信小程序,后台使用了微信云开发,...最最最重要的是,我买的云开发有限期至2023-06-26,在这之后所有存储在云环境存储里的图片都会变成空链接,但是不要急,你看看我的视频把自己图片上传到数据库就可以了

    java毕设项目之基于java+ssm党建工作小秘书.zip

    基于Java+SSM的党建工作小秘书是一个使用Java语言和SSM框架(Spring、SpringMVC、MyBatis)开发的应用程序。它旨在为党组织提供便捷的信息化管理工具,以协助进行党建活动管理和日常党建工作。 技术介绍: Java...

    java_jsp项目源码_+SQL办公自动化管理系统(源代码+论文).rar

    文件管理模块提供文件的上传、下载、编辑等功能,方便用户共享和协作。会议管理模块可协助用户安排会议、发送通知并跟踪会议进展。日程安排模块帮助用户合理规划时间,提高工作效率。任务分配模块使管理者能够有效地...

    java web开发技术大全

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    上传下载南京同庆水若寒开发的下载系统-downjsp.rar

    通过这款系统,用户可以轻松地上传、管理和下载各类文件,同时支持多线程下载,提高下载速度。此外,系统还具备权限管理功能,确保文件的安全性。总体来说,南京同庆水若寒开发的下载系统_downjsp.rar是一个功能丰富...

    java web技术开发大全(最全最新)

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    java课程设计 简易计算器

    本项目旨在用java语言设计一款简易计算器,支持用户的各类常规计算功能,并支持按键发声,减少用户输入时失误的概率。 该资源内项目源码是个人的课程设计作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分...

    springboot基于JAVA的社团管理系统的设计与实现.zip

    资源管理:实现了对社团资源的上传、下载、删除等操作,支持多种文件格式,方便成员获取和分享资源。权限管理:系统内置了多种角色,如管理员、社长、普通成员等,可以根据角色分配不同的权限,保证系统的安全性。...

    java毕设课设基于web在线教育网上教育平台管理系统源码+数据库sql文件

    消息通知:系统可以发送各类通知,包括课程更新、作业提醒和系统公告等,以便及时传达重要信息。 这些功能使得在线教育平台管理系统成为一个全面的学习和交流工具,促进学生和教师之间的互动和共同进步

    JAVA毕业设计之基于mvc的高校办公室行政事务管理系统设计与实现(springboot+mysql)完整源码.zip

    文件管理:可以上传、下载、删除文件,以及查看文件列表。考勤管理:可以记录员工的考勤信息,包括上下班时间、请假、加班等。任务管理:可以分配、接收、完成、查看任务。系统采用三层架构设计,分为表现层、业务层...

    java_jsp项目源码_lerx2_utf8_v2_beta2_20121214.rar

    支持多种文件格式上传,方便用户进行内容管理。 3. 数据统计:项目提供了详细的数据统计功能,包括访问量统计、用户行为分析等。支持多种数据报表生成,帮助企业更好地了解自身运营情况。 4. 系统设置:项目提供了...

    Java毕业设计-基于jspm开发的人大机关办公管理系统-附源代码和说明文档.rar

    文件管理模块提供了文件的上传、下载、共享和版本控制功能,方便用户随时随地进行文件操作。会议管理模块能够创建会议、邀请参会人员、记录会议内容,并通过系统通知参会人员,确保会议的顺利进行。日程安排模块则...

    中国新华装修装饰源码 v4.1

    中国新华装修装饰源码整合了eWebEditor编辑器,使得后台添加内容时,可以轻松上传图片、上传视频、以及上传文件提供下载,极强的扩展功能!管理后台登陆地址 /100 或者 /manage/login.asp登陆用户名admin 密码 admin...

    国大科技入聘人员资料-JAVA通用快速开发框架源码

    通用快速开发框架是一套轻量级的权限系统,主要包括用户管理、角色管理、部门管理、菜单管理、SQL监控、定时任务、参数管理、字典管理、文件上传、系统日志、文章管理、APP模块等功能。还拥有多数据源、数据权限、...

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

    高分毕设-高分项目《基于Java实现智慧校园Android客户端及管理系统 》+源代码+文档说明

    &lt;项目介绍&gt; - 本项目定位为主要面向全国高校学生人群 可供用户浏览校园内的资讯,如各类活动比赛公告,社团、机构、班级等团队...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

Global site tag (gtag.js) - Google Analytics