指定されたURIからファイルをダウンロードしようとしたときにファイル拡張子を取得する良い方法を教えてもらえますか? 現在、WebClientを使用してファイルをダウンロードしています。 私はMIMEタイプを取得しており、これを拡張機能にマッピングしています。指定されたURIからファイルをダウンロード
これは、HeadOnly
プロパティに応じて、データまたはヘッダーだけを返すカスタムWebクライアントです。
public class SlideWebClient : WebClient {
public bool HeadOnly { get; set; }
protected override WebRequest GetWebRequest(Uri address) {
WebRequest req = base.GetWebRequest(address);
if (HeadOnly && req.Method == "GET") {
req.Method = "HEAD";
}
return req;
}
}
}
public class FileDownloader {
/// <summary>
/// Function to download a file from URL and save it to local drive
/// </summary>
/// <param name="_URL">URL address to download file</param>
public static void DownloadFile(Uri source, string destination) {
try {
using (WebClient _WebClient = new WebClient()) {
// Downloads the resource with the specified URI
// to a local file.
_WebClient.DownloadFile(source, destination);
}
} catch (Exception _Exception) {
// Error
Console.WriteLine("Exception caught in process: {0}",
_Exception.ToString());
}
}
/// <summary>
///Get the Content type of file to be downloaded for given URI
/// </summary>
/// <returns></returns>
public static String GetContentType(Uri url) {
using (SlideWebClient client = new SlideWebClient()) {
client.HeadOnly = true;
// note should be 0-length
byte[] body = client.DownloadData(url);
return client.ResponseHeaders["content-type"];
}
}
public static bool IsPdf(string contentType) {
if (contentType.Contains("application/pdf")) return true;
else return false;
}
}
与えられたURIに要求ファイル名が含まれていますか?そうであれば、最初にファイルをダウンロードすることなくURIから解析することができます。 –
URLには必ずファイル名とファイルタイプが含まれていますか? 'http:// site.com /'は、ファイル名もファイルタイプも持たない完全に有効なURLです。 –