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

本文关键字:MIME 类型 文件 MAC 确定 | 更新日期: 2023-09-27 18:19:23

我有一个简单的web表单,通过。net c#发送和发送电子邮件。此外,还有一个ASP上传ctrl,我创建一个内存流,并将流附加到邮件消息…我不需要保存文件到文件系统。

问题:当MAC用户不包括扩展在他们上传的文件(我正在测试PostedFile。内容类型确定文件和/或适当的扩展名,允许的文件RTF, TXT, PDF, DOC, DOCX),似乎ContentType返回为"应用程序/octet"…这对我来说是有意义的,因为pc需要扩展,但是;仍然不清楚天气阅读内容类型或扩展名是一个更好的方法来确定它是什么类型的文件之前,我附加。[无扩展MAC文件显然无法通过任何扩展测试]

基本上,我从上传ctrl读取文件,确定其ContentType是什么,剥离只是PostedFile。文件名,然后重新组装,因为我在switch语句中使用ContentType字符串创建附件,以确定并添加正确的扩展名到附加的文件(Filename + ext)。我这样做是为了确保不使用扩展的MAC用户仍然可以上传而不创建。zip或其他包。

问题1:关于处理这个问题,最佳实践,我的逻辑合理吗?问题2:在MAC上不使用扩展名时,所有MAC文件都会返回为"application/octect"吗?如果是这样,人们如何确定它实际上是什么类型的文件?(注意:在MAC平台上不使用扩展时,PDF工作正常)。

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

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

不要使用文件扩展名来计算MIME类型,而是使用"Winista"进行二进制分析,参见我在这里的方法,如果Winista不能计算出最后的答案,则返回URLMonhttp://social.msdn.microsoft.com/forums/en - us/vsexpressvcs/thread/d79e76e3 b8c9 - 4 - fce考试a97d - 94 ded18ea4dd

说有人用jpg扩展名重命名了一个exe…您仍然可以确定"真正的"文件格式。它不检测swf或flv的,但几乎所有其他已知的格式,你可以得到一个十六进制编辑器,并添加更多的文件,它可以检测。

编辑:

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

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