struts2.0-跪求各位大神帮助啊,Struts2文件下载GG,有中文字符的文件下载就出错,英文就不出错,求救

问题描述

跪求各位大神帮助啊,Struts2文件下载GG,有中文字符的文件下载就出错,英文就不出错,求救

本人小白,文件上传木有问题,下载英文字符文件名的文件也木有问题,就是中文字符名称的文件就GG了,跪求各位大神指点

解决方案

private static final long serialVersionUID = 1L;
//文件路径
private String filePath;
//文件名称
private String fileName;

public String getFilePath() {
    return filePath;
}

public void setFilePath(String filePath) {
    this.filePath = filePath;
}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

/** 得到文件输入流 */
public InputStream getSelectFile() throws Exception {
    return new FileInputStream(new File(filePath));
}

/** 将文件名转换成中文 */
public String getDownloadName() throws Exception {
    String downloadName = new String(fileName.getBytes(), "ISO8859-1");
    return downloadName;
}

@Override
public String execute() throws Exception {
    return SUCCESS;
}
    代码也是参照网上大神的来的,自己不是太明白,所以出错了也弄不过来,怪字迹太笨了,没学习好

解决方案二:

上传和下载英文字符文件名的文件都是没问题的

解决方案三:

解决方案四:

可是一到中文字符文件名的文件,也就是图片上的筷子扣那个文件,就GG了
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [selectFile] in the invocation stack. Check the tag specified for this action.
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause

java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [selectFile] in the invocation stack. Check the tag specified for this action.
org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:189)
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

解决方案五:

配置文件也是OK 的

    <action name="download" class="com.java.action.DownLoadAction">
        <result name="success" type="stream">
            <!-- 支持所有格式文件 -->
            <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
            <!-- 得到输入流 -->
            <param name="inputName">selectFile</param>
            <param name="contentDisposition">attachment;filename="${downloadName}"</param>
            <param name="bufferSize">4096</param>
        </result>
    </action>

解决方案六:

因为是参考或者是复制网上大神的代码,也不知道哪里不同导致的问题
package com.java.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class DownLoadAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
//文件路径
private String filePath;
//文件名称
private String fileName;

public String getFilePath() {
    return filePath;
}

public void setFilePath(String filePath) {
    this.filePath = filePath;
}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

/** 得到文件输入流 */
public InputStream getSelectFile() throws Exception {
    return new FileInputStream(new File(filePath));
}

/** 将文件名转换成中文 */
public String getDownloadName() throws Exception {
    String downloadName = new String(fileName.getBytes(), "ISO8859-1");
    return downloadName;
}

@Override
public String execute() throws Exception {
    return SUCCESS;
}

}

解决方案七:

跪求大神们带飞啊,求指点,小鸟我实在玩不动了

解决方案八:

你看看是不是字符集格式的问题,GBK,UTF-8都试一下

解决方案九:

估计你发送这个get请求到服务器的时候,就已经乱码了。 你可以输出下fileName参数。看看是不是已经乱码了

时间: 2024-08-31 11:59:41

struts2.0-跪求各位大神帮助啊,Struts2文件下载GG,有中文字符的文件下载就出错,英文就不出错,求救的相关文章

series-delphi用TChart绘制lines的问题,跪求各位大神帮助

问题描述 delphi用TChart绘制lines的问题,跪求各位大神帮助 我用delphi自带的TChart控件做图表,Chart1->Series[0]->AddXY(X,Y,"",clRed);Series为line型,画图时,发现自动排序了,并不是按照我添加数据的先后顺序画图,如何避免自动排序?series[0].xvalues.order.lonone默认的还是按照x轴的大小从小到大绘图,我该如何实现按照我添加点的顺序绘图呢?跪求各位大神帮助 解决方案 这个是折线

电话拨号-跪求各位大神,帮忙新菜鸟解决这个问题。谢谢!!

问题描述 跪求各位大神,帮忙新菜鸟解决这个问题.谢谢!! 报错原因: E/AndroidRuntime(867): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=tel5556 }源代码如下: //mainactivity代码public class MainActivity extends Activity {

c-分解素因数的问题,输出总是1,跪求各位大神

问题描述 分解素因数的问题,输出总是1,跪求各位大神 #include bool mark[100001]; int prime[100001]; int primeSize; void init(){ primeSize=0; for(int i=2;i<=100000;i++) { if(mark[i]=true) { continue; } prime[primeSize++]=i; // if(i>=1000) continue; for(int j=i*i;j<=100000;

初学android,现在要用sqlite数据库做一个用界面显示的增删改查,跪求各位大神指点!!!

问题描述 初学android,现在要用sqlite数据库做一个用界面显示的增删改查,跪求各位大神指点!!! 在android中,用sqlite数据库做一个用页面显示的增删改查,一个页面操作插入一条记录,一个页面显示查询所有记录并做删除和修改记录.跪求大神指点!!! 解决方案 http://blog.csdn.net/liuhe688/article/details/6715983 参考这个例子 满足你的需求么 解决方案二: http://blog.csdn.net/jaycee110905/ar

数据-多表关联按照一个地区插入到一张新表中。在线跪求各位大神,急急急!!!

问题描述 多表关联按照一个地区插入到一张新表中.在线跪求各位大神,急急急!!! 多表关联,我现有多张表,想将数据提取出来,按照一个地区插入到一张新表中,但是这些多张表,有的比如有西安,但是有的有没有西安,所以会造成数据的丢失,有什么好的方法可以解决?在线跪求各位大神,急急急!!! 解决方案 刚开始的的第一张表是没有西安的,informix库 解决方案二: 按照你说的要求,我觉得应该有张表的地区应该最为全面,就是说有一条主线可以将所有表都联立起来,然后可以以这张表为主表进行左联即可.. 解决方案三

性能测试-关于LoadRunner11版本的一些问题,跪求各界大神帮忙!!!

问题描述 关于LoadRunner11版本的一些问题,跪求各界大神帮忙!!! 录制脚本完毕,运行场景完毕,但是生成Analysis报告时,服务水平协议图例没有生成,"添加图例"里边也没有这个图例选项,这该怎么设置呢? Analysis分析报告时,怎么去判断内存瓶颈? 运行脚本时使用了IP欺骗功能,设置好虚拟IP.勾选"启用IP欺骗器".勾选"专家模式"之后,(因虚拟IP太多,希望不要手动添加加压机)该怎么配置加压机呢?

c语言-C语言 图书管理系统 跪求各位大神帮忙

问题描述 C语言 图书管理系统 跪求各位大神帮忙 编写一段简易的图书管理系统,整个程序的设计实现大致分为四个模块,每一个模块对应一个函数.这些函数分别是,录入图书信息函数,借书函数,还书函数,查询函数.它们的功能分别是 1采用结构定义每本图书的编号,书的名称,书的作者,书的数量等信息 2录入五本书信息函数,主要是实现将图书信息录入并保存到书库中去 3借书函数:主要实现借阅图书的功能 4还书函数:主要实现将借阅的图书还回书库的功能 5查询函数:主要功能是查询图书现在的库存情况 以上功能采用菜单操作

控件-跪求C++大神帮小弟写一份简单的程序

问题描述 跪求C++大神帮小弟写一份简单的程序 大作业具体要求:文档应用程序,要包含文件的读写,包含弹出对话框,对话框上有非静态控件,视图或对话框上要有个人信息的显示.题目自拟,要包含上述要素!求神助谢谢了,邮箱442987113@qq.com 解决方案 直接拿写字板mfc程序修改下,在about框加上个人信息就可以了. http://download.csdn.net/download/playboy1/3697524 http://download.csdn.net/download/sst

跪求各位大神,怎样才能获取各个银行实时汇率的数据呢?

问题描述 跪求各位大神,怎样才能获取各个银行实时汇率的数据呢? 解决方案 解决方案二:每天给我500块钱,再给我一个录入页面,我每天给你录入.解决方案三:人工操作内容,有时候也是"必需".你没看那些成功的网站几乎99%都是背后靠人力嘛.那些看上去好像非常整齐划一.彬彬有礼的"问答型"网站,一看就都是编辑辛苦地对文字进行整理出来的,伪装成用户上传的图片几乎都是专门的摄影师去拍摄的,虽然他们装的好像是一个自由的论坛一样.凡是内容看上去人工雕琢过甚的,几乎都是为了骗投资人

电脑出了问题 跪求各位大神帮助

问题描述 电脑在刚开始加载一个广联达程序的时候,是正常的.但是过了一段时间以后再次打开突然间出现这样一段文字:未能加载文件或程序集"System.web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"或它的某一个依赖项.系统找不到指定的路径现在在线跪等各位大神帮助, 解决方案 解决方案二:那你打电话给这个所谓的"广联达"问问.解决方案三:这个是所谓的广告贴么?