(我是新手)web网页下载,在创建输入流时抛出异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(我是新手)web网页下载,在创建输入流时抛出异常相关的知识,希望对你有一定的参考价值。

 1 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 2         //获取文件名
 3         String fileName=req.getParameter("fileName");
 4         //获取文件后缀名
 5         String str=fileName.substring(fileName.lastIndexOf("."));
 6         //设置响应头,
 7         resp.setHeader("Content-Disposition","attachment; filename="+
 8                         System.currentTimeMillis()+str);
 9         //获得绝对路径
10         String path=this.getServletContext().getRealPath(fileName);
11         
12         InputStream in=null;
13         ServletOutputStream serOut=null;
14         try{
15             //创建文件
16         File file=new File(path);
17         in=new FileInputStream(file);
18         serOut=resp.getOutputStream();
19         
20         byte[] by=new byte[1024];
21         int len;
22         while((len=in.read(by))!=-1){
23             serOut.write(by, 0, by.length);
24         }
25         }catch(Exception e){
26             
27         }finally {
28             if(serOut!=null){
29                 serOut.close();
30             }
31             if (in!=null) {
32                 in.close();
33             }
34         }
35         
36         
37     }

目的,下载网络上的文件。期间共出现两次问题,都不是代码的缘故。

第一次,相关的下载文件的文件夹,位置没放到对,放到WEB-INF了,所以获得的文件绝对路径找不到文件,导致输入流出现异常,下载下来的文件大小为0kb

             把文件夹放到外面,WebContent中,就解决了

把第一个问题件解决了,第一个文件下载下来,没有问题,但是下载第二个文件的时候,又出现了之前的问题

     在用断点调试的过程中,发现获得的文件名中有乱码,不能获取到File对象,经过对比,发现是文件名中有中文,修改,同事修改超链接中的参数,就ok,至于怎样在不修改中文的情况下搞定,暂时还没学到。

以上是关于(我是新手)web网页下载,在创建输入流时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

客户端调用web Service时抛出 java.lang.reflect.InvocationTargetException 异常

lyncClient.GetClient() 将 UISuppressionMode 设置为 1 时抛出异常

搭建控制器时抛出的调用目标抛出异常

C# HttpClient 在没有成功状态代码时抛出异常 [关闭]

Apache Oozie 在创建 mysql DB 时抛出 classnotfound 异常

Gradle 在从网络下载工件时抛出错误.. 异常:Gradle 任务 assembleDebug 失败,退出代码为 1