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

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

 package com.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial")
public class FileDownload extends ActionSupport { public InputStream getDownloadFile() {
//获取资源文件路径
InputStream inputStream = ServletActionContext.getServletContext().getResourceAsStream("F:\\Eclipse\\workspace\\fileUpload_Download\\WebContent\\upload\\java.txt");
return inputStream;
} @Override
public String execute() throws Exception { return SUCCESS;
}
}

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

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts2.devMode" value="true"></constant>
<package name="default" extends="struts-default"> <action name="downloadFile" class="com.action.FileDownload">
<result type="stream">
<param name="contentDisposition">attachment;filename="java.txt"</param>
<param name="inputName">downloadFile</param>
</result>
</action>
</package>
</struts>

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

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

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

 

有关Struts下载文件时报错问题的更多相关文章

  1. Linux下载文件时报错 To connect to ohse.de insecurely, use ‘--no-check-certificate’.

    远程调用下载文件直接用wget就可以,一般文件路径类型是http.如果有遇到是https就会下载出错. 错误如下: [root@vmu010226-node1 tmp]# wget https://w ...

  2. SpringBoot打jar包-下载文件时报错-class path resource xxxxxx cannot be resolved to URL because it does not exist

    一.问题由来 新项目的开发中,打包方式由war包改为了jar包的方式,这样在部署的时候更加的方便.测试环境使用pm2这个工具来管理项目的运行,停止,重启等等非常方便. 可是当测试人员在测试项目中的文件 ...

  3. python 使用read_csv读取 CSV 文件时报错

    读取csv文件时报错 df = pd.read_csv('c:/Users/NUC/Desktop/成绩.csv' ) Traceback (most recent call last):  File ...

  4. python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib

    python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib ...

  5. javah生成jni头文件时报错 Error: cannot access android.support...

    javah生成jni头文件时报错: Error: cannot access android.support.v7.app.AppCompatActivity class file for andro ...

  6. python读取txt文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x8e in position 8: illegal multibyte sequence

    python读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x8e in position 8: illegal multibyte ...

  7. python 读取文件时报错UnicodeDecodeError

    python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multib ...

  8. Microsoft SQL Server 17导出xlsx文件时报错:The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. (System.Data)

    导出数据时报错: 如果你是导出office 2007格式 TITLE: SQL Server Import and Export Wizard ---------------------------- ...

  9. 在英文Windows操作系统上使用SQL Server Management Studio(SSMS)导入Excel 97-2003文件时报错:Failure creating file

    今天在公司服务器上使用SQL Server Management Studio(SSMS)导入Excel 97-2003文件(.xls)时报错: Failure creating file. (Mic ...

随机推荐

  1. [about remote controller]--mstsc-teamviewer-vnc,nomachine

    https://www.jianshu.com/p/c80db368ed8a https://www.nomachine.com/download Ubuntu安装VNC,VNC却无法随系统启动,遂换 ...

  2. Xcode编辑器之基本使用(一)

    前言. 苹果原生xcode使用介绍文档 1.Xcode IDE概览 说明: 从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码 ...

  3. C# decimal指定精度

    最近做一个项目.遇到了decimal 如何指定精度的问题 一般的指定参数    param = new SqlParameter(ParamName, DbType); 但decimal就不能只通过构 ...

  4. day3_元组

    元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 一.创建元组 1.普通创建 实例1: >> ...

  5. 查找->静态查找表->分块查找(索引顺序表)

    文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...

  6. LeetCode 283 Move Zeroes 解题报告

    题目要求 Given an array nums, write a function to move all 0's to the end of it while maintaining the re ...

  7. MonkeyRunner_运行脚本(一)

    前提:环境已部署, 使用数据线连接上真机  一.使用cmd窗口单步执行monkeyrunner命令 打开cmd窗口,输入monkeyrunner (前提设置好环境变量):然后按照monkeyrunne ...

  8. vue打包后出现"Failed to load resource: net::ERR_FILE_NOT_FOUND"错误

    创建vue脚手架搭建项目之后,用npm run build经行打包,运行index.html后出现异常: 打开dist/index.html, 诸如这些的,引入是有问题的, 这边的全部是绝对路径,而本 ...

  9. 使用反向代理的http的请求流程

    此文章主要为刚接触反向代理的小伙伴梳理请求流程,以便更好的理解反向代理是何时工作的 流程 由于浏览器是有缓存的,所以本地的hosts文件的信息也会在浏览器端缓存 当客户端发起一个新的请求(例如:输入的 ...

  10. 递归、嵌套for循环、map集合方式实现树形结构菜单列表查询

    有时候, 我们需要用到菜单列表,但是怎么样去实现一个菜单列表的编写呢,这是一重要的问题. 比如我们需要编写一个树形结构的菜单,那么我们可以使用JQuery的zTree插件:http://www.tre ...