上传下载工具类

/**
 * 类描述:文件上传/下载工具类
 *
 * @author NHH
 * @date   2016年7月4日
 *
 */
public class FileUpAndDownUtil {

    /**
     * 方法描述:上传文件
     *
     * @author NHH
     * @date   2016年7月4日
     * @param myfile
     * @param fileName
     * @param request
     * @return
     * @throws Exception
     */
    public static String upload(InputStream inputStream, String fileName, HttpServletRequest request)throws Exception{
        
        //得到服务器上的文件夹路径
        String path = request.getSession().getServletContext().getRealPath("") + "\\upload\\";
        
        //通过文件输出流,将文件保存到服务的upload路径上
        FileOutputStream fos = new FileOutputStream(path + fileName);
        
        byte[] bytes = new byte[1024];
        int readByteLength = inputStream.read(bytes);
        
        
        while(readByteLength != -1){
            fos.write(bytes, 0, readByteLength);
            readByteLength = inputStream.read(bytes);
        }
        
        fos.close();
        inputStream.close();
        
        return fileName;
    }
    
    /**
     * 方法描述:下载文件
     *
     * @author NHH
     * @date   2016年7月4日
     * @param filePath
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    public static void download(String filePath, HttpServletRequest request, HttpServletResponse response) throws Exception{
        
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        OutputStream fos = null;
        InputStream fis = null;

        try {
            
            // 如果是从服务器上取就用这个获得系统的绝对路径方法。
            String fileAllPath = request.getSession().getServletContext().getRealPath(filePath);
    
            File uploadFile = new File(fileAllPath);
    
            fis = new FileInputStream(uploadFile);
            bis = new BufferedInputStream(fis);
            fos = response.getOutputStream();
            bos = new BufferedOutputStream(fos);
            
            //得到文件名
            String filename = fileAllPath.substring(fileAllPath.lastIndexOf("\\") + 1);
    
            // 这个就就是弹出下载对话框的关键代码
            response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8"));
            
            int bytesRead = 0;
            
            // 用输出流去写,缓冲输入输出流
            byte[] buffer = new byte[8192];
            while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
            bos.write(buffer, 0, bytesRead);
            
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bos != null) {
                    bos.flush();
                }
                if (fis != null) {
                    fis.close();
                }
                if (bis != null) {
                    bis.close();
                }
                if (fos != null) {
                    fos.close();
                }
                if (bos != null) {
                    bos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值