2012-11-26 24 views
6

私はこの問題の解決策を数日間探していますが、何も見つかりません。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 
+1

*存在するヘッダーをダンプできますか?ブラウザがURLからデフォルト設定しているのでしょうか?私が得た –

+0

すべてのヘッダー: 年齢= 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

+0

これを再現できるように実際のURLを教えてもらえますか? –

答えて

15

ようなPHPによって生成されるので、私はあなたがこれを試すことができ、URLからそれを抽出することはできませんreturn wetter.JPG。

+0

グレートLunyx。ありがとうございました。しかし、私はGoogleのドライブリンクのためにこれを使用すると大きな結果の文字列を取得します。たとえば、「attachment; filename = filename.apk; filename * = UTF-8''filename.apk」と入力します。 – smedasn

関連する問題