首页 > 代码库 > Struts2 .apk 文件下载及解决中文文件名乱码问题(转)

Struts2 .apk 文件下载及解决中文文件名乱码问题(转)

1、Tomcat服务器不能下载 .apk类型文件

Android的APK安装包不能下载或下载文件是以 .zip为后缀名而不是 .apk为文件后缀名时,需在 Tomcat 的 web.xml 配置文件中加入以下 MIME 类型:

1 <mime-mapping>2          <extension>apk</extension>3          <mime-type>application/vnd.android.package-archive</mime-type>4 </mime-mapping>

2、Struts2 实现文件下载并解决中文文件名乱码问题

 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4     "http://struts.apache.org/dtds/struts-2.3.dtd"> 5      6 <struts> 7        <package name="download" namespace="/" extends="struts-default"> 8            <action name="apk" class="downloadAction"> 9                <result type="stream">10                    <!-- contentType 指定下载文件的文件类型 —— application/octet-stream 表示无限制   -->11                    <param name="contentType">application/vnd.android.package-archive</param>12                    <!-- inputName 流对象名 —— 这里写inputStream,它就会自动去找Action中的getInputStream方法 -->13                    <param name="inputName">inputStream</param>14                    <!-- contentDisposition 使用经过转码的文件名作为下载文件名",将调用该Action中的getFileName方法 -->15                    <param name="contentDisposition">attachment;filename="${fileName}"</param>16                    <!-- bufferSize 下载文件的缓冲大小  -->17                    <param name="bufferSize">4096</param>18                </result>19            </action>20        </package>         21 </struts>

DownloadAction.java

 1 package com.chu.web.action.info; 2  3 import java.io.InputStream; 4 import java.net.URLEncoder; 5  6 import org.apache.struts2.ServletActionContext; 7 import org.springframework.context.annotation.Scope; 8 import org.springframework.stereotype.Controller; 9 10 @Controller @Scope("prototype")11 public class DownloadAction {12     private String fileName;13      14     public void setFileName(String fileName) {15         this.fileName = fileName;16     }17     public String getFileName() {18         /*String fileName = null;19         try {20             //解决中文文件名乱码问题21             fileName = URLEncoder.encode("文件下载.apk", "UTF-8");22         } catch (UnsupportedEncodingException e) {23             // TODO Auto-generated catch block24             e.printStackTrace();25         }26         return fileName;*/27         return URLEncoder.encode(fileName", "UTF-8");//解决中文文件名乱码问题28      }29 30     public InputStream getInputStream() {31         return ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/download/xxxxx.apk");32     }33     public String execute(){34         return "success";35     }36 }

对于以中文命名的文件,下载时提示框中文件名如果出现乱码问题,可使用 URLEncoder.encode(fileName", "UTF-8" ); 进行URL编码,即可解决下载时显示的中文文件名乱码问题。

Struts2 .apk 文件下载及解决中文文件名乱码问题(转)