private ServletContext context;
private String filename; private String mimeType; private InputStream inStream;

/**
 * 下载公文
 * @return
 */
public String download()throws Exception {
System.out.println(filename+"aaaaaaa");
  mimeType = context.getMimeType(filename);
    System.out.println(mimeType);
return SUCCESS;
}
        public InputStream getInStream() {
inStream = context.getResourceAsStream("/upload/"+filename);
if(inStream == null){
System.out.println("下载");
}
return inStream;
}
    public String getFilename() {
try {
return new String(filename.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
System.out.println("fail");
return this.filename;
}
} public void setFilename(String filename) { try {
filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
this.filename = filename;
}
     <!-- 文件下载 -->
        <action name="document2Action" class="documentAction" method="download" >

<!-- 初始文件名 --> 
<result type="stream">
<param name="contentType">${mimeType};charset=ISO8859-1</param>
<param name="inputName">inStream</param>
<param name="contentDisposition">attachment;filename="${filename}"</param>
</result>
          
        </action>只要是中文就会乱码!jbpm?ssh????.docaaaaaaa
application/vnd.ms-wordFTP 上的编码是UTF-8
项目的编码是GBK
页面编码是GB18030 这几三项不可以更改

解决方案 »

  1.   

    在Web.xml里边加个过滤器不行吗 
      

  2.   

    Web.xml 有过滤器java.net.URLEncoder 这个怎么写啊!
      

  3.   

    attachment;filename="@java.net.URLEncoder@encode(${filename}, 'UTF-8')"
    这样
      

  4.   

    struts2编码最好统一UTF-8,否则乱了你哭死都难得解决问题的
      

  5.   

                 <a href="download/document2Action.action?filename=java.net.URLEncoder.encode(${document.content})">下载</a>
    要写成这样的吗
      

  6.   

    配置文件里下载的时候肯定只传ID过去撒   哪有传Name的!
      

  7.   

    <param name="contentType">${mimeType};charset=ISO8859-1</param>
    <param name="inputName">inStream</param>
    <param name="contentDisposition">attachment;filename="${filename}"</param>
    不要搞8859-1
    我刚才要你改的地方是红色的位置
      

  8.   

        <a href="download/[email protected]@encode(${document.content}, 'UTF-8')">下载</a>
    写成这样整体就传到action去了@java.net.URLEncoder@encode(11.sql, 'UTF-8')aaaaaaaaa
    @java.net.URLEncoder@encode(11.sql, 'UTF-8')aaaaaaa没有编译
      

  9.   

    是配置文件,, understand?
    html标签是不执行OGNL 表达式的, 你这样写当然给你直接扔过去
      

  10.   

    <param name="contentType">${mimeType};charset=ISO8859-1</param>
    <param name="inputName">inStream</param>
    <param name="contentDisposition">attachment;filename="${filename}"</param>
    是Struts2的配置文件!