我與爲我提供了一個文件的URL的API時,我想下載到文件或用Delphi XE流的文件。下載從Amazon文件用Delphi
網址是這種形式: -
https://xxxxxxx.s3-us-west-2.amazonaws.com/xxx/Reports/414_20160114021919.pdf?AWSAccessKeyId=xxxxxxxxxxxxxx&Expires=1478915858&response-content-disposition=attachment%3Bfilename%3D%22123%20Test%20St%20Dallas__2016_01_14_03_16_00.pdf%22&Signature=xxxxxxxxxxx%3D
在那裏我有xxxxxxxxx'ed了敏感的安全的東西。
如果我將URL粘貼到瀏覽器,找到文件,並提出了保存對話框。
在我的Delphi程序我使用URLMON用下面的代碼(高興地偷竊和改編自回答類似的問題在這裏SO): -
function TdmXXXXXXXXX.DownloadFile(AURL, AExtWithDot: string): string;
// returns temp file name or empty string if failed;
var
sTempFileName: string;
iError: integer;
begin
sTempFileName := apmDM.GetTempFileName(AExtWithDot, True);
iError := UrlDownloadToFile(nil, PChar(AURL), PChar(sTempFileName), 0, nil);
if iError = S_OK then
Result := sTempFileName
else
Result := '';
showmessage(SysUtils.IntToHex(iError,8));
end;
的showmessage返回 「800C000D」
在URLMon: -
$EXTERNALSYM INET_E_UNKNOWN_PROTOCOL}
INET_E_UNKNOWN_PROTOCOL = HResult($800C000D);
因此,我假設問題涉及「?」後的東西,在URL中,「AWSAccessKeyId =」等
不知道從哪裏何去何從 - 搜索這裏與谷歌先生......
乾杯 傑夫
被稱爲查詢字符串。在深入這種編程之前,瞭解這個簡單的術語是至關重要的。你使用的是什麼版本的Delphi?如果我記得,後來的版本帶有一個用於連接到S3的內置組件。 –
看看這個問題。使用Delphi的雲組件可以更容易地訪問Amazon S3。 http://stackoverflow.com/questions/40243529/upload-files-to-amazon-s3-with-delphi-using-temporary-security-credentials/40269435#40269435 –
我認爲它有一些東西做的東西之前的「:」(「https」),因爲*這是協議。也許你需要做一些特殊的事情來實現安全的連接。它可能與亞馬遜無關。 (您可以通過嘗試使用其他一些https URL而不是亞馬遜網址來確認您的代碼。) –