我有一些文件上傳到filehoster,我想用編程方式下載,使用Delphi。他們不需要任何驗證碼或類似的東西,通常只需按下一個按鈕即可獲取文件。我們來看this as an example。以編程方式從filehoster下載文件
現在我想我可以簡單地使用URL即時下載 - 按鈕指向,使用TIdHTTP.Get請求並將其保存在MemoryStream/Filestream /無論。複製鏈接地址導致this site,當進入我的瀏覽器時彈出下載提示。
var
MemStream: TMemoryStream;
code: string; // added for solution
number: integer; // added for solution
begin
with TIdHTTP.Create(nil) do
try
HandleRedirects := true;
System.Delete(code,1,AnsiPos('var n =',code)+7); // added
number := StrToInt(AnsiLeftStr(code,AnsiPos(' ',code)-1)) + 1; // added
MemStream := TMemoryStream.Create;
try
// Get('http://www56.zippyshare.com/d/5862319/604061/bgAvgTable.png', MemStream);
Get(TIdURI.URLEncode('http://www56.zippyshare.com/d/5862319/' + IntToStr(number)
+ '/bgAvgTable.png'), MemStream); // added for solution
MemStream.SaveToFile('test.png');
finally
MemStream.Free;
end;
finally
Free;
end;
end;
然而,使用檢測工具,我發現,它含有302重定向到原始網站,從而執行GET請求時,我必須設置HandleRedirects,以避免出現錯誤消息,我得到的HTML代碼原來的網站,而不是我懷疑的文件。
所以,我也有點困惑如何 1)我莫名其妙地從我的瀏覽器中得到的文件雖然URL只包含一個302重定向到前一頁和 2)我可以實現從相同在我的代碼中。你有什麼機會可以教我一點嗎? ;)
編輯
感謝您輸入我能找到的問題,事實證明,我必須使用的地址被使用隨機數,它是在原來的源被發現產生。所以發佈一個請求來獲取號碼的訣竅。我已編輯相應的代碼。多謝你們 !
顯然你試圖下載一個PNG文件,但保存爲一個BMP文件。 – jachguate
@jachguate抱歉,錯字,但通過將其保存爲一個.html我確信它是上一頁的實際代碼 – DNR