package cn.com.qmhd.tools;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

import cn.com.qmhd.tools.Log;

import com.oreilly.servlet.multipart.FilePart;
import com.oreilly.servlet.multipart.MultipartParser;
import com.oreilly.servlet.multipart.ParamPart;
import com.oreilly.servlet.multipart.Part;

public class UpDownUtils{

	public boolean download(HttpServletRequest request,
			HttpServletResponse response, String filePath, String strFileName,
			String strType) {
		try {
			File f = new File(filePath);

			response.reset(); 
			response.setContentType( strType );//设置下载文件的类型 
			response.setHeader("content-disposition","attachment; filename="+strFileName); //设置下载的文件名 

			long fileLength=f.length(); 
			String length1=String.valueOf(fileLength); 
			response.setHeader("Content_Length",length1); //下载文件的大小 

			InputStream in = new FileInputStream( f ); 
			OutputStream out = response.getOutputStream(); 
			byte[] buffer = new byte[2097152]; 
			 
			int ins = in.read(buffer);//读取字节到buffer中 

			//ins == -1 时 。就已经是文件的结尾了 
			while ( ins != -1 ) {
			    out.write(buffer, 0, ins);//将缓存buffer中的数据写到文件中 
			    ins = in.read(buffer); 
			} 
			in.close(); 
			out.flush(); 
			out.close();
			return true;
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		
	}

	public String upload(HttpServletRequest request, String strFileName , int fileSize) {
		
		try {
			
			MultipartParser mp = new MultipartParser(request,fileSize * 1024 * 1024);

			//所有表单域都是Part实例 

			Part part; 

			//遍历请求中的所有表单域 

			while((part = mp.readNextPart()) != null ){ 

				//取得表单域的name属性值 
				String name = part.getName(); 

				//对于普通表单域 

				if(part.isParam()){ 

				//取得普通表单域的值 

					ParamPart paramPart = (ParamPart) part; 
			
					String value = paramPart.getStringValue("GBK"); 
			
					//System.out.println("Some common form fields:<br>name=" + name + ";value=" + value + "<br>"); 
			
				}

				//对于文件域 

				else if(part.isFile()){

					//获取文件上传域 
			
					FilePart filePart = (FilePart) part; 
					
					//System.out.println( filePart.getFileName() );
			
					//fileName = filePart.getFileName(); 
			
					if(strFileName != null){ 
			
					//输出文件内容 
			
						long size = filePart.writeTo(new File(request.getRealPath("/")+"upload/"+strFileName)); 
			
						//System.out.println("Upfile:<br>File name field=" + name + ";fileName=" + strFileName + "<br>"); 
			
					}else{ 
			
					//文件名为空 
			
						return "error";
					} 
			
					System.out.flush(); 
			
				}

			}

			return strFileName;
		} catch (Exception e) {
			Log.getInstance().printError(this.getClass().getName(), e.toString());
			e.printStackTrace();
			return "error";
		} 
		
	}

}

  

posted on 2017-01-09 14:42  悲伤穿透眼眸  阅读(163)  评论(0编辑  收藏  举报