轉址後的檔案,要如何取得原始的檔案名稱? |
答題得分者是:fatmoon1
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
magicbear
一般會員 發表:5 回覆:10 積分:3 註冊:2004-11-20 發送簡訊給我 |
function GetFileName(location: string): string;
var kk: string;
begin
kk := location;
while pos('/', kk) > 0 do
begin
kk := copy(kk, pos('/', kk) + 1, length(kk) - pos('/', kk))
end;
result:=kk;
end;
例:
showmessage(getfilename('Location: http://www.myim.cn/downloads/MyIM2004.exe')); 至於位置, 你要截取網絡傳送的資料, 或者自己寫個HTTP Client, 然後攔截Location的資料 例: flashget的資料:
...
Tue Nov 23 18:04:30 2004 GET /php/tdownload2.php?sid=11126&url=/internet/server/remote/cwinvnc337.exe&svr=1&typ=0 HTTP/1.1
Tue Nov 23 18:04:30 2004 Host: download.pchome.net
Tue Nov 23 18:04:30 2004 Accept: */*
Tue Nov 23 18:04:30 2004 Referer: http://download.pchome.net/php/tdownload2.php?sid=11126&url=/internet/server/remote
Tue Nov 23 18:04:30 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Tue Nov 23 18:04:30 2004 Pragma: no-cache
Tue Nov 23 18:04:30 2004 Cache-Control: no-cache
Tue Nov 23 18:04:30 2004 Connection: close
Tue Nov 23 18:04:30 2004 HTTP/1.1 302 Found
Tue Nov 23 18:04:30 2004 Date: Tue, 23 Nov 2004 10:04:30 GMT
Tue Nov 23 18:04:30 2004 Server: Apache
Tue Nov 23 18:04:30 2004 X-Powered-By: PHP/4.3.8
Tue Nov 23 18:04:30 2004 Location: http://dla.pchome.net/internet/server/remote/cwinvnc337.exe
Tue Nov 23 18:04:30 2004 Content-Length: 0
Tue Nov 23 18:04:30 2004 Content-Type: text/html; charset=gb2312
Tue Nov 23 18:04:30 2004 Connection: Close
Tue Nov 23 18:04:30 2004 重定向到 http://dla.pchome.net/internet/server/remote/cwinvnc337.exe
Tue Nov 23 18:04:30 2004 正在連接 dla.pchome.net:80
Tue Nov 23 18:04:30 2004 正在連接 dla.pchome.net [IP=202.109.72.68:80]
Tue Nov 23 18:04:31 2004 已連接.
Tue Nov 23 18:04:31 2004 GET /internet/server/remote/cwinvnc337.exe HTTP/1.1
Tue Nov 23 18:04:31 2004 Host: dla.pchome.net
Tue Nov 23 18:04:31 2004 Accept: */*
Tue Nov 23 18:04:31 2004 Referer: http://dla.pchome.net/internet/server/remote
Tue Nov 23 18:04:31 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Tue Nov 23 18:04:31 2004 Pragma: no-cache
Tue Nov 23 18:04:31 2004 Cache-Control: no-cache
Tue Nov 23 18:04:31 2004 Connection: close
Tue Nov 23 18:04:35 2004 HTTP/1.1 200 OK
Tue Nov 23 18:04:35 2004 Date: Tue, 23 Nov 2004 09:45:50 GMT
Tue Nov 23 18:04:35 2004 Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) DAV/1.0.3 PHP/4.0.6 mod_perl/1.26
Tue Nov 23 18:04:35 2004 Last-Modified: Mon, 17 Mar 2003 02:24:50 GMT
Tue Nov 23 18:04:35 2004 ETag: "7dc014-6436c-3e7531f2"
Tue Nov 23 18:04:35 2004 Accept-Ranges: bytes
Tue Nov 23 18:04:35 2004 Content-Length: 410476
Tue Nov 23 18:04:35 2004 Content-Type: application/octet-stream
Tue Nov 23 18:04:35 2004 Connection: Close
...
取得紅色的句子, 然後作為參數傳入
|
magicbear
一般會員 發表:5 回覆:10 積分:3 註冊:2004-11-20 發送簡訊給我 |
略
Tue Nov 23 18:12:37 2004 Location: http://login.passport.com/login.srf?lc=1033&id=1929&ru=http%3A%2F%2Fwww%2Emsnusers%2Ecom%2Ftestmytest%2Fmsgattachments%2F3&tw=43200&kv=5&ct=1101204757&kpp=1&ver=2.1.0173.1&tpf=181fb60c4b14cb72b441f6aed54c00cc
Tue Nov 23 18:12:37 2004 Content-Length: 0
Tue Nov 23 18:12:37 2004 WWW-Authenticate: 安全問題,略
Tue Nov 23 18:12:37 2004 Set-Cookie: 安全問題,略 domain=.msnusers.com; expires=Sat, 04-Oct-2003 00:00:00 GMT; path=/
Tue Nov 23 18:12:37 2004 Connection: Close
Tue Nov 23 18:12:37 2004 重定向到 http://login.passport.com/login.srf?lc=1033&id=1929&ru=http%3A%2F%2Fwww%2Emsnusers%2Ecom%2Ftestmytest%2Fmsgattachments%2F3&tw=43200&kv=5&ct=1101204757&kpp=1&ver=2.1.0173.1&tpf=181fb60c4b14cb72b441f6aed54c00cc
Tue Nov 23 18:12:37 2004 正在連接 login.passport.com:80
Tue Nov 23 18:12:37 2004 正在連接 login.passport.com [IP=65.54.179.198:80]
Tue Nov 23 18:12:38 2004 已連接.
Tue Nov 23 18:12:38 2004 GET /login.srf?lc=1033&id=1929&ru=http%3A%2F%2Fwww%2Emsnusers%2Ecom%2Ftestmytest%2Fmsgattachments%2F3&tw=43200&kv=5&ct=1101204757&kpp=1&ver=2.1.0173.1&tpf=181fb60c4b14cb72b441f6aed54c00cc HTTP/1.1
Tue Nov 23 18:12:38 2004 Host: login.passport.com
Tue Nov 23 18:12:38 2004 Accept: */*
Tue Nov 23 18:12:38 2004 Referer: http://login.passport.com
Tue Nov 23 18:12:38 2004 Cookie: MC1=V=2&GUID=BD90848E88B74457910FBBC23E4EF3E7
Tue Nov 23 18:12:38 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Tue Nov 23 18:12:38 2004 Pragma: no-cache
Tue Nov 23 18:12:38 2004 Cache-Control: no-cache
Tue Nov 23 18:12:38 2004 Connection: close
Tue Nov 23 18:12:38 2004 User Cancel at 0.
正如這個,放在OnReceive事件中:
if (lowsercase(copy(收到的字串,1,8))='location') then
begin
filename:=getfilename(收到的字串);
end;
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
magicbear
一般會員 發表:5 回覆:10 積分:3 註冊:2004-11-20 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
China Join
中階會員 發表:81 回覆:242 積分:89 註冊:2003-03-12 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
引言: 呵呵,小弟剛好有寫到這部分功能 這裡面有: IdHTTP1->Response->ExtraHeaders->Text; 第二個參數:filename= 後面就是傳回的檔名了請自行解析字串囉 ^^"對不起,delphi裡好像沒有ExtraHeaders 我試過 IdHTTP1.Response.Location IdHTTP1.Response.ResponseText IdHTTP1.Response.Pragma IdHTTP1.Response.WWWAuthenticate.Text IdHTTP1.Response.RawHeaders.Text IdHTTP1.Response.CustomHeaders.Text 也沒發現ㄝ..是否可以請再幫忙看一下,delphi中是叫什麼?謝謝... |
fatmoon1
初階會員 發表:3 回覆:29 積分:36 註冊:2004-05-24 發送簡訊給我 |
我是用 DELPHI 5.0, Indy9元件 測試範例如下 Button1: TButton;
IdHTTP1: TIdHTTP;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text:=IdHTTP1.Get('http://download.pchome.net/php/tdownload2.php?sid=19286&url=/internet/server/remote/se_setup1370.exe&svr=1&typ=0');
end;
...
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
var NumRedirect: Integer; var Handled: Boolean;
var VMethod: TIdHTTPMethod);
begin
ShowMessage(dest); //dest 存的資料就是轉向後的連結
Handled:=True; //要給 True 才不會出現 'HTTP/1.1 302 Found.'
end; 但是在取得轉向的連結後,還不知如何處理.
請各位大大多多指教. =========================
http://msi-team.com/msitasi
------
才疏學淺 |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
原問題http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=90663
但這篇magicbear有提到答案所以在這裡回文 至於位置, 你要截取網絡傳送的資料, 或者自己寫個HTTP Client, 然後攔截Location的資料 關鍵就在http Header Location欄位取得轉址後的位置 我也提供一個範例來證明magicbear所言不假 http://delphi.ktop.com.tw/download.php?download=upload/4746b1458af61_Project1.exe 有興趣的網友可以從WinHttpRequest,WinHttpRequest,WinHttpRequestOption_EnableRedirects 這幾個關鍵字開始找起
編輯記錄
bugmans 重新編輯於 2007-11-23 19:10:01, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |