【问题标题】:Getting a file without an extensions mime-type获取没有扩展名 mime 类型的文件
【发布时间】:2014-06-14 06:18:33
【问题描述】:

我正在使用 Titanium HTTP 客户端将 jpg 下载到 applicationDataDirectory。

我将文件名保存为 URL 的 md5 哈希,以便能够通过 URL 进行简单的缓存。

但是,如果我保存没有扩展名的文件,例如。就像我跑步时 sf98isdi8j3k34k3kj34k no .jpg 一样

var file = Ti.Filesystem.getFile( filePath );
var mimeType = file.blob.getMimeType();

它返回"application/octet-stream"

这是因为Mimetypes.m包含以下代码

+ (NSString *)mimeTypeForExtension:(NSString *)ext 
{ 
    [Mimetypes initialize]; 
    NSString *result=[mimeTypeFromExtensionDict objectForKey:[[ext pathExtension] lowercaseString]]; 
    if (result == nil){ 
        result = @"application/octet-stream"; 
    } 
    return result; 
}

它完全依赖于扩展名,因此您可以更改文件扩展名并导致问题。

我将如何根据文件的原始数据检查 mime 类型,而不是钛合金中的文件扩展名 - 特别是 iOS

谢谢

【问题讨论】:

    标签: ios titanium mime-types


    【解决方案1】:

    Ti.Filesystem.File 没有 MimeType 属性,也许你在想Ti.Blob

    我已成功使用此代码获取某些数据的 mimeType,类似于您已有的!

    var file = Ti.Filesystem.getFile( filePath );
    var blob = file.read();
    var mimeType = blob.getMimeType();
    

    查看TiBlob.mMimetypes.m 这可能无法解决问题,但我似乎记得在这方面取得了成功。

    【讨论】:

    • 抱歉,这只是一个错字。在文件没有扩展名的情况下,您的解决方案不起作用。因为 Mimetype 类使用扩展来为您提供 mime 类型,而不是读取实际文件。
    猜你喜欢
    • 2013-09-11
    • 2010-11-05
    • 1970-01-01
    • 2011-05-27
    • 2015-06-13
    • 2015-10-03
    相关资源
    最近更新 更多