【问题标题】:How to get actual file type if it is renamed to something different file extension in android?如果在android中将其重命名为不同的文件扩展名,如何获取实际文件类型?
【发布时间】:2020-10-13 10:01:34
【问题描述】:

我想在服务器上上传图片,很遗憾,我的服务器只支持 jpg/jpeg 文件格式。如果我要上传 png 文件,我会收到错误消息。所以在上传到服务器之前,我想确保文件类型只有 jpg/jpeg。但我担心有些用户可以通过重命名将 png 文件类型更改为 jpg。例如,myfile.png 可以使用 myfile.jpg 轻松重命名。我使用以下方法检查 Android/Kotlin 中的文件类型 -

fun getMimeType(context: Context, uri: Uri): String {
        var mimeType = ""
        mimeType = if (uri.scheme.equals(ContentResolver.SCHEME_CONTENT)) {
            val cr = context.contentResolver
            cr.getType(uri) ?: ""
        } else {
            val fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri
                    .toString())
            MimeTypeMap.getSingleton().getMimeTypeFromExtension(
                    fileExtension.toLowerCase(Locale.getDefault())) ?: ""
        }
        return mimeType
    }

但即使将 png 文件重命名为 jpg,它也只返回 jpg/jpeg。我认为它仅通过文件扩展名进行检查。所以我的问题是 - 有没有办法检查原始文件类型(在我们的例子中是 png 文件)?

快乐编码:-)

【问题讨论】:

    标签: android mime-types file-extension file-type


    【解决方案1】:

    您必须检查文件的标题并验证它是否符合 JPEG 格式(此过程适用于多种类型的文件)https://wiki.fileformat.com/image/jpeg/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多