你可以下載一個PDF這樣
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = req.GetResponse();
//check the filetype returned
string contentType = response.ContentType;
if(contentType!=null)
{
splitString = contentType.Split(';');
fileType = splitString[0];
}
//see if its PDF
if(fileType!=null && fileType=="application/pdf"){
Stream stream = response.GetResponseStream();
//save it
using(FileStream fileStream = File.Create(fileFullPath)){
// Initialize the bytes array with the stream length and then fill it with data
byte[] bytesInStream = new byte[stream.Length];
stream.Read(bytesInStream, 0, bytesInStream.Length);
// Use write method to write to the file specified above
fileStream.Write(bytesInStream, 0, bytesInStream.Length);
}
}
response.Close();
事實上,它可能來自一個.aspx處理程序不實際的事情,它是啞劇在服務器響應時返回用過的。
如果您正在獲取泛型MIME類型,如application/octet-stream,那麼您必須使用更合理的方法。
假設您不能簡單地使用文件擴展名(例如.aspx),則可以先將該文件複製到MemoryStream(請參閱How to get a MemoryStream from a Stream in .NET?)。一旦你有一個文件的內存流,你可以採取'厚臉皮'偷看它(我說厚顏無恥,因爲它不是解析PDF文件的正確方法)
我不是PDF格式的專家,但我相信讀第5個字符與ASCII閱讀器將產生「%PDF-」,這樣你就可以識別與
bool isPDF;
using( StreamReader srAsciiFromStream = new StreamReader(memoryStream,
System.Text.Encoding.ASCII)){
isPDF = srAsciiFromStream.ReadLine().StartsWith("%PDF-");
}
//set the memory stream back to the start so you can save the file
memoryStream.Position = 0;
應用程序/八位字節流的一些網址返回的MIME類型可以有什麼樣的文件。在這種情況下,我們如何檢測pdf? – kamalpreet 2014-10-17 15:39:32
我已更新回答你的問題。 – 2014-10-17 17:28:03
我們如何使用Response.Write()將其作爲Content Typr =「application/pdf」寫在客戶端的瀏覽器上? – kamalpreet 2014-10-18 15:31:10