码迷,mamicode.com
首页 > 其他好文 > 详细

有关Struts下载文件时报错问题

时间:2017-12-14 23:53:15      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:version   trace   2.0   方法   错误   res   nbsp   port   pen   

在学习文件下载的时候,我也是按照网络课程上面老师的代码一句一句敲得,和老师的一模一样;到最后测试下载的时候出现了如下的错误:

技术分享图片

而老师的写的代码可以完美运行,以下是跟着老师敲的代码:

 1 package com.action;
 2 import java.io.File;
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.InputStream;
 6 import org.apache.struts2.ServletActionContext;
 7 import com.opensymphony.xwork2.ActionSupport;
 8 
 9 @SuppressWarnings("serial")
10 public class FileDownload extends ActionSupport {
11 
12     public InputStream getDownloadFile() {
13         //获取资源文件路径
14         InputStream inputStream = ServletActionContext.getServletContext().getResourceAsStream("F:\\Eclipse\\workspace\\fileUpload_Download\\WebContent\\upload\\java.txt");    
15         return inputStream;
16     }
17     
18     @Override
19     public String execute() throws Exception {
20         
21         return SUCCESS;
22     }
23 }

struts.xml文件中的配置信息如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts2.devMode" value="true"></constant>
 7     <package name="default" extends="struts-default">
 8         
 9        <action name="downloadFile" class="com.action.FileDownload">
10            <result type="stream">
11                <param name="contentDisposition">filename="java.txt"</param>
12                <param name="inputName">downloadFile</param>
13            </result>
14        </action>
15     </package>
16 </struts>

根据报错的信息可以知道,大致错误是找不到对应的文件,导致这种错误无非就是文件路径有错误,或者是根本就不存在这样的文件。所以在

public InputStream getDownloadFile(){...}方法中打印出inputStream,看看获取道德值是否为Null值。通过调试发现在控制台中打印出来的inputStream的值确实为null。(不知道为啥会获取不到,路径正确,文件也存在)。
所以只能另外想办法获取了,以下是在getDownloadFile()方法中另一种获取路径的方法:
 1 @SuppressWarnings("serial")
 2 public class FileDownload extends ActionSupport {
 3 
 4     public InputStream getDownloadFile() {
 5         
 6         File fileDownload = new File("F:\\Eclipse\\workspace\\fileUpload_Download\\WebContent\\upload\\java.txt");
 7         InputStream inputStream;
 8         try {
 9              inputStream = new FileInputStream(fileDownload);
10              System.out.println(inputStream);
11              return inputStream;
12         } catch (FileNotFoundException e) {
13             System.out.println("文件下载出错!");
14             e.printStackTrace();
15         }
16         return null;
17     }
18     

改为这样后再次测试,发现可以运行通过。

 

 

有关Struts下载文件时报错问题

标签:version   trace   2.0   方法   错误   res   nbsp   port   pen   

原文地址:http://www.cnblogs.com/lihuibin/p/8040479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!