C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 146 を表示中)
■85643 / )  Re[2]: リンク先のファイル形式を調べる方法
□投稿者/ スマスマ (4回)-(2017/11/12(Sun) 22:31:09)
No85642 (Azulean さん) に返信

ありがとうございます。

以下のようにして試してみたのですが
disposがnothingとなっており、ファイル名を取得することができません。
他のURLも試してみましたがうまくいきませんでした
何が問題でしょうか?


    Sub main2()


        Dim url As String = "http://www.atmarkit.co.jp/fdotnet/dotnettips/618downnoname/downnoname.html"

        Dim req As HttpWebRequest _
          = CType(WebRequest.Create(url), HttpWebRequest)
        Dim res As HttpWebResponse _
          = CType(req.GetResponse(), HttpWebResponse)

        Dim fileName As String = "download.tmp"

        ' ヘッダ情報からファイル名の取得
        Dim dispos As String = res.Headers("Content-Disposition")

        If Not String.IsNullOrEmpty(dispos) Then

            ' filename=<ファイル名>の抜き出し
            Dim re As New Regex(
              "filename\s*=\s*           " &
              "(?:                       " &
              "  ""(?<filename>[^""]*)"" " &
              "  |                       " &
              "  (?<filename>[^;]*)      " &
              ")                         " _
              , RegexOptions.IgnoreCase _
              Or RegexOptions.IgnorePatternWhitespace)

            Dim m As Match = re.Match(dispos)
            If m.Success Then
                fileName = m.Groups("filename").Value
            End If
        End If

        ' ファイルのダウンロード
        Using st As Stream = res.GetResponseStream()
            Using fs As New FileStream(fileName, FileMode.Create)
                Dim buf(1024) As Byte
                Dim count As Integer = 0
                Do
                    count = st.Read(buf, 0, buf.Length)
                    fs.Write(buf, 0, count)
                Loop While count <> 0
            End Using
        End Using
        res.Close()
    End Sub



返信 編集キー/


管理者用

- Child Tree -