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 block
24             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编码,即可解决下载时显示的中文文件名乱码问题。

时间: 2024-10-10 07:13:32

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

PHP文件上传并解决中文文件名乱码问题

PHP文件上传并解决中文文件名乱码问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 if(isset($_FILES['file'])){ ? ????$upload='upload/'.$_FILES['file']['name']; ????? ????? ????if(is_uploaded_file($_FILES['file']['tmp_name'])){ ????????//iconv函数解决上传文件中文名乱码的问题,但是不提倡文

使用HttpClient MultipartEntityBuilder 上传文件,并解决中文文件名乱码问题

遇到一种业务场景,前端上传的文件需要经过java服务转发至文件服务.期间遇到了原生HttpClient怎么使用的问题.怎么把MultipartFile怎么重新组装成Http请求发送出去的问题.文件中文名乱码问题.最后都解决了,先上代码,再讲遇到的坑 1 @Slf4j 2 @Service 3 public class FileServiceImpl implements IFileService { 4 5 @Value("${FileService.putUrl}") 6 priva

通过freemarker出word的技术解决方案_通过点击一个按钮临时实现生成一个word,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件 详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default("")}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!) 另外

php上传文件中文文件名乱码的解决方法

想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了 可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码php上传文件中文文件名乱码的原因与解决办法吧. 这几天在windows下安装了XAMPP,准备初步学习一下php的相关内容.这几天接触到了php上传文件,但是出现了一个郁闷问

Ubuntu下解决解压zip文件中文文件名乱码问题

在Ubuntu下解压Windows下压缩的zip文件时,会出现解压出的带中文文件名的文件名乱码,这是因为Ubuntu和Windows默认的编码不同,Ubuntu下默认的编码是UTF-8,而Windows下默认的编码是GBK.对于这个问题,主要有以下三种解决方法: 一.命令行指定解压字符集 在Ubuntu下解压来源于Windows的zip文件,中文文件名会出现乱码问题. 出现这个问题的原因是:Windows和Ubuntu使用的默认编码不相同,而且zip文件自身却不带有任何标识其编码的信息.解决方案

php 文件中文文件名乱码的解决方法

想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了 php文件使用的是UTF-8编码,如果没有猜错APACHE处理用的应该是GBK.想明白了这个问题,就去查找相关的教程了,索性找到了iconv这个函数. 函数原型:string iconv ( string in_charset, string out_charset, string str )使用例子:$co

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法 2018-03-17 最近在使用SpringCloud搭建微服务的过程中,发现上传文件经过Zuul网关转发的时候,回应为上传文件名中文乱码导致文件的写操作失败,从而导致文件上传失败,但是不经过Zuul转发的时候,文件上传正常,因此猜测是Zuul对上传的请求的编码进行了处理.最终在网上找到了两种解决方案: 方案一.在上传文件的请求路径之前添加字符串“zuul”声明此请求的编码不做处理. 1 2 3 4 5 6 7 8 9 10

swfupload组件后台获取中文文件名乱码的问题解决

   问题描述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名称会乱码,试着用request.setCharacterEncoding("UTF-8")及fileName= new String(fileName.getBytes("iso-8859-1";),"UTF-8"); 都不可以,用FileItem对象.getString("

CentOS系统下中文文件名乱码

原文来自:http://www.zhukun.net/archives/7434 CentOS系统下中文文件名乱码 2014/09/01Linux运维centos.Linuxbear 从windows上传到linux的文件或者目录,在Linux系统中显示为乱码.虽然将Linux的env设置了LANG=en_US.UTF-8,并且本地的Shell客户端编码也设置成UTF-8,但在Shell中(或通过http访问),仍是乱码…… 原因在于,Windows 的文件名中文编码默认为GBK,压缩或者上传后