(我是新手)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