首页 > 代码库 > 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 文件下载及解决中文文件名乱码问题(转)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。