`
阅读更多
package com.tkb.daboweb.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import ssh.spring.DeployInfoUtil;
import app.j2ee.data.RandKeyCreator;
import app.j2ee.file.FileUtil;
import app.other.commons.file.MutiFileUpload;
import app.other.poi.excel.ExcelUtil;

public class FileTempUtil {
	
	private static final Log log = LogFactory.getLog(FileTempUtil.class);
	
	
	
	public static String getParam(String param, Map map){
		String temp = "";
		if(map != null){
			Object o =  map.get(param);
			if (o != null) {
				temp = (String)o;
				try {
					temp = new String(temp.getBytes("iso-8859-1"), "utf8");
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		}
		return temp.trim();
	}
	//接收Integer
	public static Integer getIntParam(String param, Map map,Integer defaultValue){
		int num = defaultValue;
		if(map != null){
			Object o =  map.get(param);
			if (o != null) {
				try {
					o = new String(((String)o).getBytes("iso-8859-1"), "utf8");
					num = Integer.parseInt((String)o);
				} catch (Exception e) {
				}
			}
		}
		return num;
		
	}
	
	//接收Date yyyy-MM-dd
	public static Date getDateParam(String param, Map map){
		 String temp = getParam(param, map);
		 Date date = null;
		 if(!temp.equals("")){
			 date = DataFormater.getDate(temp + " 00:00:00", DataFormater.DATATIME_STR); 
		 }
		 return date;
	}
	
	 
	
	
	/**
	 * 取得普通表單數據
	 * @param request
	 * @return
	 */
	public static Map getPreParameters(MutiFileUpload upload){
		return upload.parameters;
	}
	
	/**
	 * 多文件上傳 
	 * 返回 上傳文件路徑 及 原始檔案名
	 * 
	 * folder 文件夹
	 * id 文件夹
	 * isRandom,是否用随机数
	 * 
	 * return map
	 * key-oldXXX(原文件名), newXXX(新文件名), XXX(虚拟文件名)
	 */
	
	public static Map<String,String> upload(MutiFileUpload upload, String folder, String id, boolean isRandom) throws Exception {
		Map<String,String> temp = new HashMap<String,String>();
		
		String rootPath = DeployInfoUtil.getUploadFilePath() + ConstantsUtil.UPLOADFILE_PATH + File.separator +
		folder + File.separator;
		
		String virtualPath = ConstantsUtil.UPLOADFILE_PATH + File.separator +folder + File.separator;
		
		Iterator iterator = upload.files.values().iterator();
		while (iterator.hasNext()) {
			FileItem item = (FileItem) iterator.next();
			if (upload.getFileName(item) == null
					|| upload.getFileName(item).equals(""))
				continue;
			String rankKey = RandKeyCreator.getRandStr(12);
			String fileName = upload.getFileName(item); //原來的檔案名
			String fileType = fileName.substring(fileName.lastIndexOf("."),fileName.length());
			String fieldName = item.getFieldName();
			//設置原始檔案名
			temp.put("old"+fieldName, fileName); //原始文件名称 abc.jpg
		    if(isRandom){
		    	fileName = rankKey+fileType;
		    }
		    temp.put("new" + fieldName, fileName); //随机文件名 3434343434a.jpg
			FileUtil.saveFile(rootPath + id + File.separator ,fileName, item.get());
			fileName = virtualPath + id + File.separator + fileName;
			temp.put(fieldName, fileName.replace("\\", "/"));	//url文件名 upload/news/1/3434343434a.jpg
		}
		
		return temp;
	}
	
	
	
	
	/**
	 * 多文件上傳 
	 * @param request
	 * @param folder 資源文件 如,game
	 * @param id 表中id
	 * @param files	game下面二級目錄如game、pic 若沒有則null
	 * @return
	 * @throws Exception
	 */
	
	public static Map<String,String> upload(MutiFileUpload upload, String folder, String id, String [] files) throws Exception {
		Map<String,String> temp = new HashMap<String,String>();
		
		String rootPath = DeployInfoUtil.getUploadFilePath() + ConstantsUtil.UPLOADFILE_PATH + File.separator +
		folder + File.separator;
		
		String virtualPath = ConstantsUtil.UPLOADFILE_PATH + File.separator +folder + File.separator;
		
		Iterator iterator = upload.files.values().iterator();
		while (iterator.hasNext()) {
			FileItem item = (FileItem) iterator.next();
			if (upload.getFileName(item) == null
					|| upload.getFileName(item).equals(""))
				continue;
			String rankKey = RandKeyCreator.getRandStr(12);
			String fileName = upload.getFileName(item); //原來的檔案名			
			String fieldName = item.getFieldName();
			if(files == null){
				FileUtil.saveFile(rootPath + id + File.separator + rankKey,fileName, item.get());
				fileName = virtualPath + id + File.separator + rankKey + File.separator + fileName;
				temp.put(fieldName, fileName.replace("\\", "/"));
			}else{
				for(String file:files){
					if(file.equals(fieldName)){
						FileUtil.saveFile(rootPath + file + File.separator + id + File.separator + rankKey,
								fileName, item.get());
						fileName = virtualPath + file + File.separator + id + File.separator + rankKey + File.separator + fileName;
						temp.put(fieldName, fileName.replace("\\", "/"));
						break;
					}
				}
			}
		}
		
		return temp;
	}
	
	public static void delFile(String fileName) throws Exception{
		String filePath = fileName.substring(0,fileName.lastIndexOf("/"));
		filePath = fileName.substring(0,filePath.lastIndexOf("/"));
		filePath = DeployInfoUtil.getUploadFilePath() + filePath.replace("/", "\\");
		FileUtil.delAll(new File(filePath));
	}
	
	public static void delUpdateFile(String fileName) throws Exception{
		String filePath = fileName.substring(0,fileName.lastIndexOf("/"));
		filePath = DeployInfoUtil.getUploadFilePath() + filePath.replace("/", "\\");
		FileUtil.delAll(new File(filePath));
	}
	//add by zhangmingshuang ---------2012-02-21
	public static void delFilePost(String fileName) throws Exception{
		String filePath = fileName.substring(0,fileName.lastIndexOf("/"));
		filePath = DeployInfoUtil.getUploadFilePath() + filePath.replace("/", "\\");
		FileUtil.delAll(new File(filePath));
	}
	public static void delUpdateFilePost(String fileName) throws Exception{
		String filePath = DeployInfoUtil.getUploadFilePath() + fileName.replace("/", "\\");
		FileUtil.delAll(new File(filePath));
	}

	/**
	 * 文件長度單位處理
	 * @param orilength
	 * @return
	 */
	public static  String getFileSizeHandle(long orilength){
		DecimalFormat df = new DecimalFormat( "0.## "); 
		if(orilength < 1024){
			return orilength+"B";
		}else if(orilength < 1024*1024){
			Float si=orilength/1024f;
			return df.format(si)+"KB";
		}else{
			Float si=orilength/1024f/1024f;
			return df.format(si)+"M";
		}
		
		
	}
	
	
	
	
	
	
	/**
	 * 下載
	 * @param request
	 * @param response
	 * @param path 路径Z:\huayuschool\
	 * @param fileName 文件名 
	 * @throws Exception
	 * @return loadFlag ---true 下載成功, false  下載失敗
	 */
	public static boolean download(HttpServletRequest request, HttpServletResponse response, String path, String fileName) throws Exception{  
		boolean loadFlag = true; //下載成功標志位
		File file = null;
		InputStream in = null; // 輸入流
		OutputStream out = null; // 輸出流
		//在下載附件之前設置響應類型和頭部文件
		response.setContentType("application/x-msdownload");
		response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(ExcelUtil.subLastStr(fileName, "/"),"UTF-8"));		
		try{
			file = new File(path); //取得文件對像
            //從下載附件創建輸入流,并向請求獲取并寫入(客戶端或網絡)輸出流
			in = new BufferedInputStream(new FileInputStream(file));
			out = response.getOutputStream();
			int readSize = 1024 * 10; //讀取大小
			int length = 0; //讀取剩余大小
			byte[] readByte = new byte[readSize];
			while ((length = in.read(readByte, 0, readSize)) != -1) {
				out.write(readByte, 0, length);
			}
			out.flush();
		}catch(Exception e){
			loadFlag = false;
			e.printStackTrace();
		}finally{
			if(in!=null || out!=null ){
				try {
					in.close();
					out.close();
				} catch (IOException e) {
					loadFlag = false;
					e.printStackTrace();
				}	
			}
		}
		return loadFlag;
	}
	
}

 

0
1
分享到:
评论

相关推荐

    Java文件工具类

    Java文件工具类

    Java加载配置文件工具类

    这个"Java加载配置文件工具类"很可能是为了解决这个问题而创建的一个实用工具,帮助开发者更方便、高效地处理配置文件。配置文件通常以.properties或.xml格式存在,用于存储应用程序的参数、配置项等。 配置文件的...

    java 操作文件工具类 java 操作文件工具类

    java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java ...

    上传文件工具类

    这个"上传文件工具类"显然提供了处理文件上传的功能,可能包括了文件的读取、验证、编码转换、异常处理等多个方面。下面我们将深入探讨这个主题,以及相关的关键知识点。 首先,`UploadFileUtils.java`很可能包含了...

    Android上传文件工具类

    Android上传文件工具类

    读取properties文件工具类

    这个"读取properties文件工具类"是为了简化程序中对`.properties`文件的读取操作而设计的。通过这样的工具类,开发者可以方便地加载和获取配置文件中的属性值,避免重复编写相同的代码。下面我们将详细探讨`...

    ZIP格式压缩文件工具类

    ZIP格式压缩文件工具类

    文件工具类

    文件上传下载工具类!

    分片上传文件工具类FileInfoUtils

    分片上传文件工具类,对应文章为:https://blog.csdn.net/y534560449/article/details

    CreateFileUtil 创建文件工具类

    创建文件工具类 包含创建文件夹 文件 临时文件等

    java操作文件工具类

    文件工具类java操作文件工具类java操作文件工具类java操作文件工具类java操作文件工具类

    java 上传文件工具类 java 上传文件工具类

    java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类java 上传文件工具类 java 上传文件工具类

    一个很全的java文件工具类

    每个程序员都应该有一套自己的工具类,这个工具类提供很全的java文件操作方法

    C# 文件工具类 文件读写 复制 删除 创建文件夹

    C# 文件工具类 实际项目使用 久经考验 文件读写 复制 删除 创建文件夹 判断文件扩展名等等

    一次代码重构之旅-快速读写xml文件工具类封装

    在描述中提到的博客文章“一次代码重构之旅-快速读写xml文件工具类封装”,作者分享了如何通过Java进行XML操作的优化,将原始的XML处理代码整合到一个工具类中,提供简洁易用的API。在阅读该博客文章的过程中,我们...

    java读写文件工具类

    大家可以不用在为操作文件发愁了! 小弟觉得这个工具类还不是很完善,高手在帮忙完善一下,别忘了共享出来哦!

    Android文件操作工具类

    文件操作工具类,包含生成保存,复制,删除,读取,获取文件名,获取文件列表等等,只有你想不到,没有你找不到的Android端工具类,复制到项目中可直接使用

    Zip4j文件工具类

    使用 net.lingala.zip4j包实现相关操作,相对于JDK自带的zip操作类,其不仅支持密码操作,更加简单方便,且不依赖其他类库。

    C# 造作XML文件工具类

    这是一个C#操作XML文件的工具类,基本上你要用的都给你写好了,直接使用

    java文件工具类

    实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能

Global site tag (gtag.js) - Google Analytics