`

文件下载

    博客分类:
  • java
阅读更多

文件下载代码(2008-02-26 21:33:36)标签:情感   
 
 String fileName = request.getParameter("fileName");
  fileName = fileName.substring(fileName.indexOf("=")+1);
 
  String filePath = servlet.getServletContext().getRealPath("")
  + "\\upload\\" ;
  String file = filePath + fileName;
  System.out.println(file);
  FileInputStream fis = null;
  OutputStream os = null; 


  byte[] bos = new byte[1024];
  int length = 0;
  try {

   response.setContentType("application/x-msdownload");
   response.setHeader("Content-disposition", "attachment;filename="
     + new String(fileName.getBytes("gb2312"),"iso8859-1"));
  
   fis = new FileInputStream(file);
   os = response.getOutputStream();
   while((length=fis.read(bos))!=-1){
    os.write(bos, 0, length);
//    os.flush();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   try {
    if(os!=null)
     os.close();
    if(fis!=null)
     fis.close();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }

 

 

 

 

 

注意:

1.response.setContentType("application/x-msdownload");

2.response.setHeader("Content-disposition", "attachment;filename="
     + new String(fileName.getBytes("gb2312"),"iso8859-1"));

 PS:解决下载中文乱码 fileName.getBytes("gb2312"),"iso8859-1")

3.待解决问题:选择图片下载时候点取消抛异常

 

----------------------------------------------------------------------------------------------
用commons.fileupload实现文件的上传和下载2008年04月11日 星期五 15:27commons.fileupload实现文件的上传,需要用到的组件如下:

1)Commons-fileupload-1.1.zip,下载地址为http://archive.apache.org/dist/jakarta/commons/fileupload/

2)commons-io-1.1.zip,下载地址为:http://archive.apache.org/dist/jakarta/commons/io/

代码如下:
<%!
//服务器端保存上传文件的路径
    String saveDirectory = "g:\\upload\\";
    // 临时路径 一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
    String tmpDirectory = "g:\\upload\\tmp\\";
    // 最多只允许在内存中存储的数据大小,单位:字节
    int maxPostSize = 1024 * 1024;
%>
<%
    // 文件内容
    String FileDescription = null;
    // 文件名(包括路径)
    String FileName = null;
    // 文件大小
    long FileSize = 0;
    // 文件类型
    String ContentType = null;

%>

<%
   DiskFileUpload fu = new DiskFileUpload();//创建一个新的文件上传句柄
    // 设置允许用户上传文件大小,单位:字节
   fu.setSizeMax(200*1024*1024);
    // 设置最多只允许在内存中存储的数据,单位:字节
   fu.setSizeThreshold(maxPostSize);
    // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
   fu.setRepositoryPath("g:\\upload\\tmp\\");
    //开始读取上传信息 得到所有文件
   try{
      List fileItems = fu.parseRequest(request);//解析上传的请求
     }catch(FileUploadException e){
         //这里异常产生的原因可能是用户上传文件超过限制、不明类型的文件等
         //自己处理的代码
     }
%>
<%
// 依次处理每个上传的文件
   Iterator iter = fileItems.iterator();
   while (iter.hasNext()) {
     FileItem item = (FileItem) iter.next();
       //忽略其他不是文件域的所有表单信息
     if (!item.isFormField()) {
       String name = item.getName();
       long size = item.getSize();
       String contentType = item.getContentType();
     if((name==null||name.equals("")) && size==0)
       continue;
%>
<%
   //保存上传的文件到指定的目录
String[] names=StringUtils.split(name,"\\"); //对原来带路径的文件名进行分割
   name = names[names.length-1];
   item.write(new File(saveDirectory+ name));
}
}
%>
下面是其简单的使用场景:
A、上传项目只要足够小,就应该保留在内存里。
B、较大的项目应该被写在硬盘的临时文件上。
C、非常大的上传请求应该避免。
D、限制项目在内存中所占的空间,限制最大的上传请求,并且设定临时文件的位置。

可以根据具体使用用servlet来重写,具体参数配置可以统一放置到一配置文件


--------------------------------------------------------------------------------

文件的下载用servlet实现
      public void doGet(HttpServletRequest request,
                       HttpServletResponse response)
     {
        String aFilePath = null;    //要下载的文件路径
         String aFileName = null;    //要下载的文件名
         FileInputStream in = null; //输入流
         ServletOutputStream out = null; //输出流

         try
    {
        
             aFilePath = getFilePath(request);
             aFileName = getFileName(request);

             response.setContentType(getContentType(aFileName) + "; charset=UTF-8");
             response.setHeader("Content-disposition", "attachment; filename=" + aFileName);

             in = new FileInputStream(aFilePath + aFileName); //读入文件
            out = response.getOutputStream();
            out.flush();
           int aRead = 0;
           while((aRead = in.read()) != -1 & in != null)
       {
             out.write(aRead);
         }
           out.flush();
      }
       catch(Throwable e)
     {
     log.error("FileDownload doGet() IO error!",e);
      }
         finally
         {
             try
             {
                 in.close();
                 out.close();
             }
             catch(Throwable e)
             {
             log.error("FileDownload doGet() IO close error!",e);
             }
         }
     }

分享到:
评论

相关推荐

    不需要会员的文档下载器

    在提供的压缩包文件中,“ExuiKrnln_Win32.lib”可能是一个动态链接库文件,用于支持“萝卜头文档下载器.exe”的功能实现。这类库文件通常包含可被其他程序调用的函数,可能包含了解析网页、模拟登录、抓取下载链接...

    在线文档下载器

    在线文档下载器可能使用此库来解析和处理从网站下载的PDF文件,确保用户可以本地存储和阅读这些文档。 “iDocDown.exe”是主程序执行文件,是在线文档下载器的核心部分。它包含了实现下载功能的算法和逻辑,能够...

    ajax实现java文件下载

    6. **新建 文本文档.txt**:这可能是示例中的一个测试文件,用于演示如何通过Ajax进行下载。在实际应用中,这个文件的名称和类型将由用户选择或由业务逻辑决定。 具体实现步骤: 1. **前端**:在JSP文件中,使用...

    萝卜头文档下载器1.1

    萝卜头文档下载器是一款Windows端的免费文档下载工具,可以帮助我们下载各种常用文档,降低获取成本!软件下载好后无需安装,就可以直接打开使用。 界面非常的干净整洁,支持下载的范围也非常广泛,支持范文、协议书...

    收费文档下载方法c.zip

    这些工具能够解析百度文库的页面,抓取文档内容并将其转换成本地文件。使用这类工具时,用户需要复制百度文库文档的网页链接,然后粘贴到工具的输入框内,按照提示进行操作。值得注意的是,这种方法可能受制于网站的...

    豆丁网文件下载器

    豆丁网免费下载器(冰点)无需登录也无需积分,只需要将需要下载的文档的网页地址复制在软件的录入框中就可以自由下载,并最终生成pdf文件。对部分pdf文件能够提取文字生成txt。 豆丁网免费下载器还支持自由下载百度、...

    在线文档下载神器

    对于"Fish-v321"这个文件,根据上下文推测,这可能是某个特定的在线文档下载神器的版本号或者是该工具的安装包文件名。具体的功能和使用方法,可能需要进一步查阅相关软件的说明书或者进行实际操作来了解。总的来说...

    Visual Studio 2010 帮助文件下载助手

    visual studio 2010的帮助文档很难下载,一方面文件很多很大,全部文档超过1GB,使用微软自带的 或者辅助工具,由于没有发挥多线程和断点续传的特点,下载速度很慢,容易失败。 另一方面迅雷等下载工具,可以实现...

    国密文档下载链接

    国密规范文档所有标准稳当的下载链接,SM2/SM3/SM4/SM9等,各种国密产品检测规范

    文档下载器.zip

    【描述】"文档下载器" 提供了一个集成化的解决方案,让用户能够轻松下载网络上的文档资源,特别是可能存在于各种文档分享平台上的PDF、SWF等格式的文件。它可能包含了用于处理不同文件类型的组件,以及一些支持程序...

    冰点文档下载器,支持下载网页百度文档

    在提供的压缩包子文件“Fish-v324-0712”中,我们可以推测这可能是冰点文档下载器的一个版本,其中可能包含了软件的执行文件、帮助文档、许可证文件等组成部分。用户在下载这个压缩包后,需要解压并按照指示安装和...

    pb实现http文件下载功能--源代码 可以直接使用

    标题中的“pb实现http文件下载功能--源代码 可以直接使用”指的是使用PowerBuilder(简称PB)编程语言实现HTTP协议进行文件下载的功能,并且提供了可以直接使用的源代码。这个功能在软件开发中常用于实现自动更新...

    豆丁文档下载破解器

    豆丁文档下载破解器. 豆丁文档下载破解器. 豆丁文档下载破解器.

    csv文件下载(人员信息.txt)

    由于在学习numpy数据分析的时候没有csv类型文件,又懒得自己一个个敲字,便想来csdn里随便下载一个。然而......居然要钱啊!!!!!!!我没钱,所以自己写了个,我不要你们的钱,麻烦各位拿资源的时候吱一声,这是...

    百度或豆丁的原始文件 下载 免积分

    标题中的“百度或豆丁的原始文件 下载 免积分”指的是从百度文库或豆丁网这两个在线文档分享平台上获取原始文件的方式,通常这些平台为了盈利,会限制用户免费下载高质量的文档,需要消耗积分或者购买。但这个标题...

    豆丁当当文档下载

    综上所述,"豆丁当当文档下载"涉及到的技术点包括文档分享平台的使用、文件下载工具、文件格式转换(如SWF到PDF)、文档管理以及特定平台的文件格式(如DOCIN)。这些工具和服务的使用可以帮助用户更有效地获取和...

    豆丁文档下载工具无需登录

    为了解决这一问题,豆丁文档下载工具应运而生,旨在为用户提供无需登录即可下载豆丁网文档的途径,从而节约宝贵的时间和精力。 豆丁网提供的是一个集合了各类专业文档、研究报告和学习资料的资源宝库。无论是在学术...

    豆丁文档下载器 简体中文绿色修正版

    豆丁文档下载器是一款专为用户设计的工具,主要用于从豆丁网下载各种电子文档。豆丁网作为国内知名的在线文档分享平台,汇集了大量专业报告、学习资料、课件、学术论文等资源,但其部分文档需要付费才能查看或下载。...

    豆丁网免费下载工具,可把豆丁网文件下载成pdf文件

    总的来说,豆丁网免费下载工具是为了解决无法直接下载豆丁网文档的问题,它通过将网页转换为PDF格式,使用户能够离线阅读和保存文件。在使用过程中,用户应关注版权问题,合理使用工具,并掌握一定的PDF文件管理技巧...

Global site tag (gtag.js) - Google Analytics