读书人

idhttp只能上载英文名的文件吗

发布时间: 2013-01-06 15:44:48 作者: rapoo

idhttp只能下载英文名的文件吗?
做了个下载工具,可是下载中文名的就会报错,下载英文名的就可以,这是怎么回事

Mystream:=TmemoryStream.Create;

aurl:='http://***/****/report/'+idhttp1.URL.PathEncode('APL提单.bmp');

idhttp1.Get(aurl,Mystream);

mystream.SaveToFile(gs_path+'\'+'APL提单.bmp');

当文件名是中文的时候会报错 EIDHTTPProtocolException with message 'Http/1.1403 Forbindden'

当文件名是全英文的就可以了

怎么回事????
[解决办法]
应该是汉字编码问题
可以用抓包工具对比下浏览器下载时的HTTP-GET包与Indy的GET包有什么不同。
通过对那个中文进行编码(gbk->utf8或UCS2->utf8)应该可以的
(浏览器能下载的,indy-http组件肯定办得到)

另外,这里没提及Delphi版本,Delphi从某个版本开始支持unicode,字串处理方式略有不同,但原理是一样的。
[解决办法]
Http/1.1403 Forbindden

是说你无权查看,是权限问题呀。
[解决办法]
gs_path+'\'+'APL提单.bmp'

这个路径不正确吧,看看gs_path是不是已经带了斜线了;

改成SaveToFile('d:\APL提单.bmp');试试

[解决办法]
idhttp肯定是可以下载中文文件名文件的。我的项目跑了几年了,没问题的。
检查楼上各位说的
[解决办法]

引用:
idhttp肯定是可以下载中文文件名文件的。我的项目跑了几年了,没问题的。
检查楼上各位说的

同意的,
我自己也写过一套小程序的,升级时,那个帮助文件就是中文,如"XXXX帮助系统.CHM"
就很正常的

[解决办法]
http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
这个你可参考一下的

[解决办法]
应该把中文文件名进行编码

读书人网 >.NET

热点推荐