2014-01-13 25 views
1

我有一個我下載的缺少文件擴展名的字節數組。我需要給這個文件一個擴展名,這在我的情況下將永遠是.gif,並轉換回一個字節數組。C# - 字節數組和文件擴展名

我從而完成了第一步:

FileContentResult file = File(imageList.Single(), "image/gif"); 

我不知道下一步該怎麼做。 FileContentResult有一個FileContents參數,它的類型是byte數組。我嘗試過使用它,但它並不包含數據中的擴展名。

字節數組是否包含擴展類型?這是我第一次和一個人一起工作,所以我對他們是什麼以及我能用他們做什麼的理解是缺乏的。

+2

不,他們沒有。有一些方法可以根據字節數組中的文件標題找出並找出它,但是對於您認爲快速簡單的事情來說,這是一項令人難以置信的工作量。這裏有一個GIF規範,可以幫助您確定如何根據標題檢測GIF:http://www.w3.org/Graphics/GIF/spec-gif89a.txt –

+0

@Simon因此任何文件的文件擴展名不會包含在字節數組中? – lobsterhat

+0

完全沒有。字節數組實際上是構成文件的字節。如果擴展名是文件內容的一部分,那麼它將在那裏。但它不會在每個文件的相同位置......並且發現它需要知道如何解析您想要支持的每個文件的格式。 –

回答

0

image/gif是一種MIME類型,用於在互聯網上告訴客戶如何解釋一組數據。

如果將數據保存到磁盤,則不需要。

+2

我想OP是問如何從字節數組中檢測MIME類型.. –

0

我想也許你的問題領域的措辭有點誤導。當你使用術語「下載」時,你的意思是「通過http連接檢索」,或者「從磁盤文件或數據庫字段中讀取(過去式)」?

我在想這是後一種情況 - 所以我會繼續。

以這種方式拉出的原始數據不會有文件名。爲什麼???文件名是指向文件系統內某些數據的指針。如果你有一個標有「綠色東西」的牛皮紙袋,而你碰巧從包里拉出一個蘋果,那麼蘋果本身就會將該蘋果(原始數據)與標有「綠色物品」的包(指針)聯繫起來, 。

由於您的代碼引用了FileContentResult,因此我推斷您正在使用MVC,並且您在控制器代碼內,試圖將字節數組傳遞迴瀏覽器。

如果您仔細查看下面的鏈接,可能會發現FileContentResult對象具有一個名爲「FileDownloadName」的整潔屬性。這是您要設置文件名稱的位置 - 追加擴展名。

http://msdn.microsoft.com/en-us/library/system.web.mvc.filecontentresult(v=vs.118).aspx