动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.教您如何成为 EJB 专家详解系列连.
.tomcat连接池的配置.
.Maven2.0:编译、测试、部署、运行.
.JBuilder 2005单元测试之慨述.
.Java容器分析—List和Set.
.Spring Web Flow .
.构建企业级应用的六大误区(英文).
.struts构建文件上传(四).
.看java编程思想笔记(5-6).
.使用EclipseSWT控件开发WEB应用.
.全面挖掘Java Excel API 使用方法.
.高效J2ME应用程序秘诀二十招.
.关于一道操作符面试题的思考.
.Java核心代码例程之:ThreadDemo.
.从HTML到XML.
.JDBC 概述(五).
.在Mascot Capsule V3中围绕任意轴.
.区分引用类型和原始类型.
.抽象PACKAGES增加系统灵活性.
.Java在C/S网络中的应用.

httpclient3.0 上传文件名及field中文解决方法

文章类别:Java教程 | 发表日期:2008-1-5 |


最近利用httpclient来做模拟表单提交的程序,发现这个咚咚对中文的支持实在是差,查看源码后发现问题出现
在org\apache\commons\httpclient\util这个包里的EncodingUtil.Java,和org\apache\commons\httpclient\methods\multipart这个包里的StringPart.java及FilePart.java这三个类里面。

先说说EncodingUtil这个类,虽然你可以在第50行看到
private static final String DEFAULT_CHARSET = "iso-8859-1";
这样的定义,但你在往下看就会发现getAsciiBytes(final String data)这个里并没有用这定义的编码来对数据进行encoding.而是用了US-ASCII码来进行encoding的。程序如下:
public static byte[] getAsciiBytes(final String data) {

        if (data == null) {
            throw new IllegalArgumentException("Parameter may not be null");
        }

        try {
            return data.getBytes("US-ASCII");  //就是这一句拉
        } catch (UnsupportedEncodingException e) {
            throw new HttpClientError("HttpClient requires ASCII support");
        }
    }


把编码该成你自己想要的吧。在这里解决了上传文件名为中文的问题。接下来解决field字段内容为中文的的问题
修改StringPart中58行:
 public static final String DEFAULT_CHARSET = "US-ASCII";
同理,改成你自己想要的编码
然后重新编译打包。记得把logging 和codec 这两个包引进项目里。否则编译会出一堆错误。

其实在StringPart这个类里是提供了自定义编码格式的方法。可是在FilePart类里没有实现而已。
第79行:
public StringPart(String name, String value, String charset) {

        super(
            name,
            DEFAULT_CONTENT_TYPE,
            charset == null ? DEFAULT_CHARSET : charset,
            DEFAULT_TRANSFER_ENCODING
        );
        if (value == null) {
            throw new IllegalArgumentException("Value may not be null");
        }
        if (value.indexOf(0) != -1) {
            // See RFC 2048, 2.8. "8bit Data"
            throw new IllegalArgumentException("NULs may not be present in string parts");
        }
        this.value = value;
    }
你可以在FilePart里把这个方法实现了。这样你就可以指定编码格式提交表单了。个人觉得这个方法比修改默认编码强。灵活性高些。

其实我只想模拟表单提交,在applet中实现文件上传,本想偷懒不自己写模拟表单提交这块的。用了httpclient这个开源包。可是打完applet的jar包发现这个包竟然350多k。让我非常的郁闷。看来还是需要自己写模拟表单实现提交了。起码打完包也不会超过20k。

假如需要转载,请注明出处和作者。谢谢
QQ:221704
MSN:flyly@yeah.net
EMAIL:zhangfl@sports.cn



上一篇:tomcat配置技巧(转载) 人气:346
下一篇:Lucene中update及delete的实现 人气:241
点击此处浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報