私はこの問題の解決策を数日間探していますが、何も見つかりません。Content-Dispositionなしでファイル名を取得
Webクライアントを使用してWebサーバーからファイルをダウンロードします。ダウンロードは正常に動作しますが、実際のファイル名は取得できません。これは私にとっては非常に重要です。
多くのホームページで、ファイル名をContent-Disposition-Headerに保存する必要があります。残念ながら、このサイトのヘッダーは空です。私はそれを得ることを試みた:
string header_contentDisposition ="";
using (WebClient client = new WebClient())
{
client.OpenRead(link);
header_contentDisposition = client.ResponseHeaders["Content-Disposition"];
MessageBox.Show(header_contentDisposition);
}
このヘッダーの内部に保存される情報はありません。
ブラウザ(IE、Opera、Chrome)でファイルをダウンロードしようとすると、ファイル名がfiledialogに表示されるため、どこかに保存する必要があります。
私はどこでそれを見つけることができますか?
EDIT:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
HttpWebResponse res = (HttpWebResponse)request.GetResponse();
using (Stream rstream = res.GetResponseStream())
{
string fileName = res.Headers["Content-Disposition"] != null ?
res.Headers["Content-Disposition"].Replace("attachment; filename=", "").Replace("\"", "") :
res.Headers["Location"] != null ? Path.GetFileName(res.Headers["Location"]) :
Path.GetFileName(url).Contains('?') || Path.GetFileName(url).Contains('=') ?
Path.GetFileName(res.ResponseUri.ToString()) : defaultFileName;
}
res.Close();
}
catch { }
がhttp://upload.p-kratzer.com/index.php?dir=&file=asdfasdfwervdcvvedbにこれをテストし、それがない:リンクは
http://www.example.com/download.php?id=10
*存在するヘッダーをダンプできますか?ブラウザがURLからデフォルト設定しているのでしょうか?私が得た –
すべてのヘッダー: 年齢= 292161 接続=キープアライブ は=バイト のContent-Length = 15953830 のCache-Control =最大エージング= 31536000 のContent-Type =アプリケーション/ vnd.android-範囲を受け入れます。パッケージアーカイブ 日付=金曜日、2012年11月23日09:21:40 GMT 有効期限=土曜日、2013年11月23日09:21:40 GMT 最終更新日=金曜日、23 11月2012 08:38:35 GMT サーバー= nginx – user1854270
これを再現できるように実際のURLを教えてもらえますか? –