`
liujinmarshall
  • 浏览: 118236 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java Servlet文件上传解决方案(主要针对中文)

阅读更多
   以前做动力中心那个网站的时候,由于用户要求要上传图片以及一些文件,所以要一个上传Servlet的组件。最后选中了SmartUpload,至少在Baidu上搜,到处都是。
   没想到这才是噩梦的开始。主要问题是在中文文件名上。后来找了很多资料,用了一个迫不得已的最后方法:重新编译SmartUpload,加上中文的解决方法。后来也不知道怎么也就OK了。
   前几个月动力中心的硬盘挂了,数据全丢了。不巧,我这里也没有备份,工作室的备份也丢了。没有办法,只好从一个旧的版本改起。其实中文开发的问题还是很多的,即使在Windows下好好的,到Linux下也会出各种各样的问题(比如Locale是en_US.UTF8)等等。
   再也恢复不起来原来的办法了。后来也是在网上找到的资料,说是可以用Commons里的FileUpload. Jakarta Commons名气挺大的,我一起想学学,却一直忘,也不知道该怎么用(以前只听过BeanUtils, 用来注入一个bean的)。
  马上从Apache下了一个来试试。注意,要用起来FileUpload,还要下一个Commons IO。里面对国际化的支持还是不错的,至少我用item.getName()出来的居然就有中文。
   但保存文件还是遇到了问题。为了对国际化的良好支持,要达到以下几点:在页面显示的文件名要是中文的,下载的时候保存的文件名也要是中文的,同时文件要保存在一个目录下。
   在做链接生成的时候,我发现浏览器会把链接中的中文自动encode成UTF-8的URL表示(就是%20%30那种)。没错,文件保存也可以用这个名字,这样在不支持中文路径的linux上也可以保存中文文件名了。然后我自己写了一个下载的Servlet,用于从本地读取文件内容,并写入response.getWriter()里。这样的话文件名自动就成中文了。至于重名问题,我的链接是这么写的: http://www.test.com/download/1892649237492/%8D%82.txt 结果文件名会自动转成中文的(IE6, FF1.5通过)。但是实际的文件名是1892649237492%8D%82.txt,就是没有了"/",这一点,在Download Servlet里解析。同时DownloadServlet里加了一些逻辑,保护系统的安全。
 

分享到:
评论

相关推荐

    SmartUploadservlet文件上传下载

    `SmartUpload`组件为Java Web开发者提供了高效、易用的文件上传下载解决方案,降低了开发复杂度,提高了开发效率。在使用过程中,结合良好的代码规范和安全策略,可以构建出稳定且功能完善的文件管理功能。

    性能最好的Java文件上传组件

    文件上传组件在Java中扮演着关键角色,因为Java标准库中的Servlet API虽然提供了一定的文件上传支持,但在处理大文件或者高并发场景下可能性能不足。因此,开发者通常会采用第三方库,如Apache Commons FileUpload、...

    jQuery_file_upload-Servlet上传版本

    《jQuery_file_upload-Servlet上传版本》是一个基于jQuery的文件上传解决方案,特别针对Servlet环境进行了优化,解决了在Java平台上常见的文件上传问题,如进度条显示和中文文件名编码问题。这个解决方案使得开发者...

    java乱码的解决方案

    ### Java乱码问题及其解决方案 在Java开发过程中,字符编码问题常常导致中文显示为乱码。乱码问题可能出现在各种场景下,例如JSP页面、Servlet处理请求等。本篇文章将详细探讨Java乱码问题产生的原因及解决方案。 ...

    uploadify java版 可上传多张图片

    在描述中提到“看名字就应该知道”,意味着这个项目或教程直接针对Java环境,提供了处理多图片上传的解决方案。 Uploadify的核心功能是通过JavaScript和Flash(或HTML5)技术在用户浏览器端进行文件选择和预览,...

    java中文乱码的解决方法

    针对与Spring框架集成的应用,可以通过在`web.xml`文件中进行相应的配置来解决中文乱码问题。具体步骤如下: 1. **修改Web配置文件**: 在`web.xml`文件中加入以下配置,用于设置请求编码格式为`UTF-8`。 ```xml...

    java 上传、下载 组建(源码) 彻底解决乱码问题。

    总之,这个“java 上传、下载 组建”提供了全面的文件上传解决方案,特别是对于中文文件名乱码的处理,使得开发者可以更专注于业务逻辑,而无需担忧底层的编码问题。通过深入理解并使用这个源码,可以提高Java Web...

    java和jsp针对上传功能的系统

    当涉及到文件上传功能时,这两个技术结合可以提供一种强大的解决方案。本文将深入探讨如何使用Java和JSP来实现一个文件上传系统。 首先,我们需要了解文件上传的基本流程。用户通过Web表单选择本地文件,然后提交...

    java上传照片控件

    首先,"java上传照片控件"通常是指一个Java库或者组件,它的主要职责是处理文件上传请求,包括接收上传的文件、验证文件类型和大小、存储文件到服务器以及返回反馈信息。这种控件通常会提供一套完整的解决方案,帮助...

    上传文件类该包中有上传文件的类专门针对jsp中上传文件

    而FileUpload库则提供了完善的解决方案,它能够处理大文件、多文件上传,以及复杂的表单数据。 1. **文件上传的基本流程** 在JSP中,文件上传通常涉及以下步骤: - 用户通过HTML表单选择要上传的文件,表单需要...

    CKFinder 文件管理器 for java.zip

    这个压缩包"CKFinder 文件管理器 for java.zip"包含 CKFinder 的Java版本及其相关资源,使得开发者能够轻松地在Java环境中实现文件上传、下载、删除和其他文件操作功能。 1. **CKFinder 概述** CKFinder 是一款...

    JSF上传 JSF大文件上传 JSF上传代码 JSF上传源代码

    项目的源代码中应该包含了上述所有部分,提供了一个完整的JSF大文件上传解决方案。对于希望学习或改进自己JSF文件上传功能的开发者来说,这是一个宝贵的资源。通过深入研究源代码,可以了解到如何处理大文件、如何...

    针对支持HTML5的浏览器做的JQuery-File-Upload插件java版Demo

    综上所述,"针对支持HTML5的浏览器做的JQuery-File-Upload插件java版Demo"是一个实用的工具,它结合了HTML5的先进特性和Java的稳健后端处理,为开发者提供了一个高效的文件上传解决方案。通过阅读和理解提供的Demo,...

    文件上传微服务后台

    【文件上传微服务后台】是一个简洁高效的后台上传服务解决方案,旨在简化文件上传的复杂性,让用户只需一个jar文件即可启动服务。这个服务不依赖任何额外的包,这意味着它具有高度的自包含性和便携性,无论是Windows...

    jspeditor_java_

    【标题】"jspeditor_java_" 描述了一个基于Java开发的JSP网页编辑器插件,该插件具备文件上传...通过Java Servlet技术和前端交互,它实现了后端处理和前端展示的无缝对接,为JSP开发者提供了一套实用的工具解决方案。

    Jsp文件上传助手 JspUpload Beta 1.0

    总之,`Jsp文件上传助手 JspUpload Beta 1.0`是一个针对JSP的文件上传解决方案,它解决了上传文件时丢失表单数据的问题,使得开发者可以更方便地在Web应用中集成文件上传功能。通过正确地使用这个工具,可以提高应用...

    jsmart_jsp上传组件

    【jsmart_jsp上传组件】是一款专为Java服务器页面(JSP)设计的文件上传解决方案。这个组件的主要目的是简化在JSP应用中处理文件上传的功能,使得开发者能够更方便地集成文件上传操作,同时提供了对中文文件名的支持...

    commonupload文件上传组件

    `commonupload`文件上传组件是针对这一需求而设计的,它提供了便捷的多文件和单文件上传解决方案,简化了开发过程。 **J2EE环境下的文件上传** J2EE(Java 2 Platform, Enterprise Edition)是Java平台上的企业级...

    大文件上传支持断点续传springboot版

    本项目"大文件上传支持断点续传springboot版"就是针对这一需求,提供了一种解决方案。 首先,我们要理解大文件上传的核心问题。当文件过大时,一次性上传可能导致网络中断、服务器超时等问题。因此,分片上传是解决...

    javaxls中文教程.rar

    通常,这类手册会包含详细的步骤解释、实例代码以及可能遇到的问题解决方案,是开发者快速上手的宝贵参考资料。 【标签】"java excel"这两个标签明确指出了教程的主要内容。Java是一种广泛使用的编程语言,而Excel...

Global site tag (gtag.js) - Google Analytics