java和jsp文件的编码都是UTF-8 的
文件下载
private String inputPath;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
public void setInputPath(String value) throws UnsupportedEncodingException {
inputPath = new String(value.getBytes("ISO-8859-1"),"UTF-8");
}
public InputStream getInputStream() throws Exception {
if(log.isDebugEnabled()){
log.debug("inputPath="+inputPath);
}
return new java.io.FileInputStream(inputPath);
// return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
//使用上面的语句将无法获取到inputStream,如果资源恰好在web应用下面,则是可以的。
}
/**
* 下载日志文件
* @return
* @throws Excepiton
*/
public String download () throws Exception{
String fileName = inputPath.substring(inputPath.lastIndexOf(java.io.File.separator)+1, inputPath.length());
if(log.isDebugEnabled()){
log.debug("fileName="+fileName);
}
ServletActionContext.getResponse().setHeader("Content-Disposition", "attachment; filename="+new String(fileName.getBytes("gb2312"),"iso-8859-1"));
return SUCCESS;
}
注意:第一个转换,"ISO-8859-1"————"UTF-8" UTF-8是根据你自己的编码来处理
第二个转换,"gb2312"————"iso-8859-1" 你就不要改变了,不管你是什么编码,都这么处理就是了,只要你的客户用的是中文的操作系统,呵呵
配置文件的内容
<action name="download" class="com.work.qxgl.loglogin.LogLoginAction"
method="downloadLogs">
<result name="success" type="stream">
<param name="inputName">inputStream</param>
<param name="bufferSize">4096</param>
</result>
</action>
下载设置
<a href='<s:url action="download" namespace="/qxglloglogin"><s:param name="inputPath" value="filePath" /></s:url>'><s:property value="fileName" /></a>
文件上传
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
// since we are using <s:file name="upload" .../> the file name will be
// obtained through getter/setter of <file-tag-name>FileName
/**
* 如果表单域为fj,那么就叫getFjFileName;
* @return
*/
public String getUploadFileName() {
return fileName;
}
public void setUploadFileName(String fileName) {
this.fileName = fileName;
}
// since we are using <s:file name="upload" ... /> the content type will be
// obtained through getter/setter of <file-tag-name>ContentType
/**
* 如果表单域为fj,那么就叫getFjContentType
* @return
*/
public String getUploadContentType() {
return contentType;
}
public void setUploadContentType(String contentType) {
this.contentType = contentType;
}
在配置文件中限制上传文件的格式
< action name ="fileUpload" class ="tutorial.FileUploadAction" >
< interceptor-ref name ="fileUpload" >
< param name ="allowedTypes" >
image/bmp,image/png,image/gif,image/jpeg
</ param >
</ interceptor-ref >
< interceptor-ref name ="defaultStack" />
< result name ="input" > /FileUpload.jsp </ result >
< result name ="success" > /ShowUpload.jsp </ result >
</ action >
分享到:
相关推荐
在Struts2框架中,文件上传和下载是常见...以上就是关于Struts2文件上传下载及处理中文乱码问题的详细解析。在实际开发中,需要根据具体项目环境和需求进行相应的调整和优化,确保文件操作的正确性和字符编码的一致性。
在处理文件下载时,Struts2提供了一套完整的解决方案,包括处理中文文件名的乱码问题。在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行...
通过上述实践和调试,我们已经成功解决了Struts2框架下中文文件名上传和下载的乱码问题。在遇到类似问题时,可以按照这些步骤进行排查和修复。记住,关键在于正确配置Struts2的拦截器、请求编码以及在处理文件名时...
本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2文件上传支持: 在struts.xml配置文件中,我们需要添加`<constant>`元素来设置允许上传的...
首先,我们需要了解Struts文件上传的基本原理。在Struts中,文件上传是通过`Commons FileUpload`库来实现的,它是Apache Commons项目的一部分,专门处理HTTP请求中的多部分数据,包括文件上传。在Struts的ActionForm...
Struts2是一个强大的Java Web...总之,解决Struts2中的中文乱码问题,关键在于配置正确的字符编码,并在文件上传和下载过程中处理好编码转换。通过以上步骤,你可以有效地在Struts2项目中实现对中文URL和文件名的支持。
7. **文件上传**:在处理文件上传时,如Struts 2的`FileUpload`插件,需要确保文件名的编码正确处理,例如: ```java String fileName = new String(file.getName().getBytes("ISO-8859-1"), "UTF-8"); ``` 通过...
Struts框架是一款经典的Java Web开发框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在处理文件上传和下载时,Struts...提供的源码和文档资源是实践这些概念的好材料,可以进一步加深对Struts文件操作的理解。
2. **处理中文文件名**:为了解决中文文件名的乱码问题,可以生成一个基于时间戳的唯一文件名,例如在`getNumberFileName()`方法中。 3. **下载代码**:在Action中,创建一个输入流读取文件,然后通过Servlet的`...
本DEMO是为了解决Struts2在处理中文输入时可能出现的乱码问题,确保系统能够正确地接收和显示中文字符。 首先,我们要理解乱码产生的原因。在Web应用中,数据的传输通常涉及多种编码方式,如HTTP请求的默认编码通常...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互时,如允许用户上传个人资料图片或下载文档。本教程将深入探讨如何在Struts2中实现这两个功能,并特别关注解决中文文件名的问题。 首先,我们要...
综上所述,理解和掌握Struts2的文件上传和下载机制,以及如何处理中文乱码和文件类型识别问题,对于开发高效、稳定的Web应用至关重要。通过细心的配置和代码编写,可以确保文件操作功能的顺畅运行。
本文将深入探讨Struts1中的文件上传,包括单文件上传、多文件上传,以及解决文件名乱码和重名冲突等问题。 1. **文件上传基础** 文件上传是Web应用中常见的一种功能,允许用户从本地电脑上传文件到服务器。在...
综上所述,Struts2的文件上传下载涉及到前端表单设计、Struts2 Action的编写、文件的服务器存储策略、数据库的设计和操作,以及可能出现的编码问题处理。理解并掌握这些知识点,能帮助开发者在实际项目中实现稳定...
使用struts2.0上传文件,完全解决了中文乱码问题。运行项目前请先在D盘建立个名tmp的文件夹,实例上传的文件将保存在tmp文件夹中。文件大小限制为15M,该示例蛮完整的,有些架包忘删了导致项目有点大。
1.struts2 带进度条文件上传 源码 2.源码中有lib 下载后部署马上就能用 3.代码中有详细的注释信息 4.对关键点有详细的解释说明 5.如果谁用起来觉得有问题可在评论留言,留联系方式,我会联系你的 6.非常感谢原创作者...
本教程将深入探讨如何在Struts框架中实现文件的上传与下载功能,并解决在处理中文文件名时可能出现的乱码问题。 首先,让我们了解文件上传的基本流程。在Struts中,文件上传主要依赖于Apache Commons FileUpload库...
Struts框架是Java Web开发中常用的MVC框架之一,它为开发者提供了强大的控制层支持,使得Web应用的结构更加清晰。...这个DEMO是一个很好的实践教程,帮助你更好地掌握Struts文件上传和处理中文文件名的方法。
在处理文件上传和下载时,Struts2可能会遇到一个常见的问题,即中文文件名的乱码问题。这是因为不同的系统和软件对字符编码的支持不同,尤其是涉及到网络传输时,编码的兼容性尤为重要。 在“struts2 中文文件名...