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

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

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

リンク先のファイル形式を調べる方法 [1]

[トピック内 23 記事 (21 - 23 表示)]  << 0 | 1 >>

■85720 / inTopicNo.21)  Re[10]: リンク先のファイル形式を調べる方法
  
□投稿者/ Jitta (341回)-(2017/11/15(Wed) 17:20:20)
No85718 (スマスマ さん) に返信

仕様は整理できていますか?
例えば、このページ、あなたの質問が書いてあるこのページをあなたのプログラムに通した時、
何を、どういう名前で保存したいですか?
例えば、
「引用返信」のリンク
各投稿の右上にある三角と四角
No85651 にある拡張子が aspx のリンク
同じ投稿の 436153 で終わるリンク
No85666 にあるディレクトリへのリンク

これらを、どうしたいですか?
具体例を元に考えましょう。
引用返信 編集キー/
■85721 / inTopicNo.22)  Re[10]: リンク先のファイル形式を調べる方法
□投稿者/ 魔界の仮面弁士 (1463回)-(2017/11/15(Wed) 17:22:17)
No85718 (スマスマ さん) に返信
> No85643 の方法は、
> Content-Type ヘッダーではなく、Content-Disposition ヘッダーで読む方法ではないでしょうか?

そうですよ。ですから、
『Content-Type ヘッダーを読む方法』ではなく、
『HTTPヘッダを読む方法』となっていますよね。

Content-Disposition ヘッダーであれ
Content-Type ヘッダーであれ、
HTTP 応答ヘッダーであることには変わりないので
同じ方法で取得できるはずです。


以下、別パターンとして。(基本的には No85643 と同じです)


Dim url As String = "http://www.wankuma.com/favicon.ico"

Dim req = DirectCast(WebRequest.Create(url), HttpWebRequest)
'Content-Type を知りたいだけなら、GET の代わりを HEAD を使えます。
'ファイル本体も同時に得る場合は、直接 GET / POST しましょう。
req.Method = WebRequestMethods.Http.Head

'HTTP 応答ヘッダーは文字列として得られますが、
'下記ではそれを、ContentType クラスで受けるようにしてみました。
Dim contentType As System.Net.Mime.ContentType
Using res = DirectCast(req.GetResponse(), HttpWebResponse)
  Dim ct As String = res.Headers(HttpResponseHeader.ContentType)
  If ct Is Nothing Then
    contentType = New System.Net.Mime.ContentType()
  Else
    contentType = New System.Net.Mime.ContentType(ct)
  End If
End Using
引用返信 編集キー/
■85722 / inTopicNo.23)  Re[11]: リンク先のファイル形式を調べる方法
□投稿者/ 魔界の仮面弁士 (1464回)-(2017/11/15(Wed) 17:33:50)
No85721 (魔界の仮面弁士) に追記
> Content-Disposition ヘッダーであれ
> Content-Type ヘッダーであれ、
> HTTP 応答ヘッダーであることには変わりないので
> 同じ方法で取得できるはずです。

サーバーの構成によっては、Content-Type で追加の情報を返さず、
常に固定的に "application/octet-stream" が返されるケースもあります。

その場合は、ファイルの内容から判断することになりますね。

ファイルのバイナリーからファイルの種類を判断するために
FindMimeFromData という API が用意されていますので、
これを使ってみるのも良いかもしれません。
https://msdn.microsoft.com/en-us/library/ms775107.aspx
https://dobon.net/vb/bbs/log3-43/25883.html
http://smdn.jp/programming/netfx/tips/find_mimetype/
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ