关于delphiXE中使用idhttp下载带有中文的文件解决方法。
2013-10-31 15:02
639 查看
在delphi7中使用idhttp下载中文文件没有问题,但是在delphiXE中下载带有中文的文件就有问题。这是因为在delphiXE中的string类型占用的字节不一样照成的,
解决方法,在request之前对url进行编码
idHTTP.URL.URLEncode(fileurl)
。例子如下:这个是下载的函数;
procedure TForm3.Button2Click(Sender: TObject);
var
filestream:TFileStream;
tempurl:string;
begin
try
filestream:=TFileStream.Create('D:\六鱼.mp3',fmcreate);
tempurl :='http://aaa.wqx.cn/wqx/国学/六鱼.mp3';
IdHTTP1.Request.ContentRangeStart :=0;
IdHTTP1.HandleRedirects := True; //必须支持重定向否则可能出错
IdHTTP1.ReadTimeout := 30000; //超过这个时间则不再访问
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)';
IdHTTP1.Request.ContentRangeEnd :=GetFilesize(tempurl);
tempurl :=IdHTTP1.URL.URLEncode(tempurl) ;
IdHTTP1.Get(tempurl,filestream);
finally
filestream.Free;
end;
end;
---------------
获取文件大小的函数如下;
function TForm3.GetFilesize(fileurl: string):Int64;
var
idHTTP : TIdHTTP;
begin
idHTTP := TidHTTP.Create(nil);
try
idHTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon)';
idHTTP.HandleRedirects := True; //必须支持重定向否则可能出错
idHTTP.ReadTimeout := 30000; //超过这个时间则不再访问
fileurl :=idHTTP.URL.URLEncode(fileurl);
idHTTP.Head(fileurl);
Result := idHTTP.Response.ContentLength;
finally
//idHTTP.Disconnect;
idHTTP.Free;
end;
end;
用 fileurl :=idHTTP.URL.URLEncode(fileurl);就可以了;
与大家分享一下。
相关文章推荐
- 使用Win8的IE无法下载带有不安全标记文件的解决方法
- 通过serverlet方式下载文件,不能显示中文的解决方法
- 关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
- 文件链接下载时不支持中文的解决方法-让tomcat支持中文链接和中文目录
- 使用swfupload上传文件出现中文乱码现象的解决方法
- 关于PC机Linux (我的是红帽6.3)下使用dnw进行USB下载出现:can not open /dev/secbulk0解决方法
- 腾讯云服务器购买后关于无法使用xftp上传文件的解决方法
- 关于在xcode中使用Versions时,比较文件出现The File Merge application could not be located. 解决方法
- 关于linux中使用vim打开文件出现^M的解决方法
- 关于在xcode中使用Versions时,比较文件出现The File Merge application could not be located. 解决方法
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- 关于ASP无组件上传文件时 中文 双引号 无法取得 文件名 扩展名 解决方法
- 关于QT中使用到的文件有中文或者有空格的情况的一些解决
- 关于CppSqlite中数据库文件中文路径识别问题的解决方法
- 关于使用servlet下载中文名称的文件
- Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(执行操作前就转换编码)
- 关于使用jdbc连接服务器MySQL无法使用中文查询的解决方法
- 解决关于php中文文件下载问题
- 关于RCP项目使用UTF-8编码,导出后中文乱码的解决方法。
- 关于使用pyinstaller 打包带有matplotlib 等出现UnicodeDecodeError解决方法