Delphiを使用して、プログラムでダウンロードしたいファイルホスティング業者にアップロードされたファイルがいくつかあります。キャプチャなどは必要ありません。通常は、ボタンを押すだけでファイルを取得できます。これを例に取りましょう。
今すぐダウンロード - ボタンが指している URL を取得し、TIdHTTP.Get 要求を使用して、それを MemoryStream / Filestream / なんでも保存できると考えました。リンク アドレスをコピーすると、このサイトにつながります。ブラウザに入力すると、ダウンロード プロンプトが表示されます。
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)コード内から同じことを達成する方法について、ちょっと混乱し ています。あなたの誰かがそこで私を少し教育する可能性はありますか?;)
編集
あなたの入力のおかげで、私は問題を見つけることができました.私が使用しなければならないアドレスは、元のソースにある乱数を使用して生成されることがわかりました. そのため、最初に番号を取得するリクエストを投稿するとうまくいきます。それに応じてコードを編集しました。