一个连接有重定向
比如www.xxx.com/123.php?name=aaa如何获得最后实际下载文件的扩展名
比如www.xxx.com/123.php?name=aaa如何获得最后实际下载文件的扩展名
解决方案 »
- delphi哪些值参数是传递引用的
- BMP转jpeg问题2!!各位大侠帮帮忙看看
- Query1: CommandText does not return a result set 是什么意思啊!!
- 请问FastReport 直接打印出错问题
- 如何给在制作CHM格式的帮助文件的时候添加HelpContext?(在线等,解决即给分。)
- QuickReport控件的打印,在什么事件中绑定结果集和QRDBText控件?
- 寻找兼职编程人才
- 一个关于打印的问题!怎么样把一张表中的纪录全部打印出来?
- 怎样得到执行外部命令结束后再继续向下运行呢?
- 关于数据文本文件的读、写的几个小问题。(其实问题挺菜的)
- 莫名其妙的
- webbrowser模拟按钮提交?
http://www.zhaodll.com/dll/download.asp?softid=662&downid=29&id=660最后实际文件是个rar文件,我想在不下载的前提下获取文件名,比如这个连接的文件名就是urlmon.rar
2 211.191.183.19|
11 |
38 |
3 http://z2.zhaodll.com:808/urlmon.rar|
1 z2.zhaodll.com|
2 60.190.222.182|
11 |
13 application/octet-stream|
4 http://z2.zhaodll.com:808/urlmon.rar|
14 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\ONP0HA2Z\urlmon[1].rar|
5 http://z2.zhaodll.com:808/urlmon.rar|
6 http://z2.zhaodll.com:808/urlmon.rar|这是我截获的所有数据,名称是urlmon.rar吗?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UrlMon, ActiveX, StdCtrls, ComCtrls, ExtCtrls;type
TForm1 = class(TForm, IBindStatusCallback)
pb: TProgressBar;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Label3: TLabel;
Timer1: TTimer;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
function GetPriority(out nPriority): HResult; stdcall;
function OnLowResource(reserved: DWORD): HResult; stdcall;
function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
szStatusText: LPCWSTR): HResult; stdcall;
function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc;
stgmed: PStgMedium): HResult; stdcall;
function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
public
{ Public declarations }
DownloadProgress: Integer;
end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }uses
Unit2;var
stemp: String;function TForm1.GetBindInfo(out grfBINDF: DWORD;
var bindinfo: TBindInfo): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.GetPriority(out nPriority): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.OnDataAvailable(grfBSCF, dwSize: DWORD;
formatetc: PFormatEtc; stgmed: PStgMedium): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.OnLowResource(reserved: DWORD): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.OnObjectAvailable(const iid: TGUID;
punk: IInterface): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
szStatusText: LPCWSTR): HResult;
begin
if ulStatusCode = 4 then
begin
ShowMessage(szStatusText);
result := E_ABORT ;
end
else
result := E_NOTIMPL;
end;function TForm1.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult;
begin
result := E_NOTIMPL;
end;function TForm1.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult;
begin
result := E_NOTIMPL;
end;procedure TForm1.Button1Click(Sender: TObject);
var
td: TUrlDownload;
begin
stemp := '';
td := TUrlDownload.Create(false) ;
end;end.------------------------------------------
unit Unit2;interfaceuses
Classes, UrlMon;type
TUrlDownload = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;implementation{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TUrlDownload.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }{ TUrlDownload }uses
Unit1;procedure TUrlDownload.Execute;
begin
{ Place thread code here }
UrlDownloadToFile(nil, PChar(form1.Edit1.Text), PChar(form1.Edit2.Text), 0, form1);
end;end.窗体上1个button,2个editedit1里面是要下载的地址,edit2里面是要保存的路径,
在OnProgress里面获得要下载的真正地址。