确定MAC上传流文件的MIME类型

时间:2012-01-04 22:12:16

标签: c# .net macos upload mime-types

我有一个简单的网络表单,通过.NET C#发送和发送电子邮件。另外还有一个ASP UPLOAD ctrl,我从中创建一个内存流并将流附加到邮件消息...即不需要将文件保存到文件系统。

问题:当MAC用户不对其上传的文件进行扩展时(我正在测试PostedFile.ContentType以确定文件和/或适当的扩展名,允许的文件RTF,TXT,PDF,DOC,DOCX)它看起来像ContentType作为“应用程序/八位字节”回来...这对我来说没有PC的要求,但是对我来说是有意义的;天气阅读时仍然不清楚ContentType或扩展名是一种更好的方法来确定我附加之前它是什么类型的文件。 [无扩展MAC文件显然会失败任何扩展测试]

基本上,我从上传ctrl读取文件,确定它的ContentType是什么,只删除PostedFile.Filename,然后在我使用switch语句中的ContentType字符串创建附件时重新组合,以确定并添加正确的扩展名附件(文件名+ ext)。我这样做是为了确保不使用扩展的MAC用户仍然无需上传创建.ZIP或其他包。

问题1:关于解决这个问题,最佳做法,我的逻辑是否正确? 问题2:当不在MAC上使用扩展时,所有MAC文件是否将返回为“application / octect”,如果是,那么有人如何确定它实际上是什么类型的文件? (注意:在MAC平台上不使用扩展时,PDF工作正常)。

提前致谢。 如果需要代码示例,请告知。

1 个答案:

答案 0 :(得分:0)

不要使用文件扩展来计算MIME类型,而是使用“Winista”进行二进制分析,请参阅我的方法,如果winista无法解决问题,则会返回到URLMon 上次回答 http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d79e76e3-b8c9-4fce-a97d-94ded18ea4dd

假设有人用jpg扩展名重命名一个exe ...你仍然可以确定“真正的”文件格式。它不会检测swf或flv,但几乎所有其他众所周知的格式+你可以得到一个十六进制编辑器并添加它可以检测到的更多文件。

修改 下载Winista:http://www.netomatix.com/Products/DocumentManagement/MimeDetector.aspx

这个问题给了我一个好主意,因为您希望附加一个可以安全地在MAC和PC上工作的文件扩展名我/您可以编辑mime-types.xml文件以包含可以打开的安全文件扩展名MAC和PC上的特定文件类型。