首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android-检测URL MIME类型?

Android 检测 URL MIME 类型

在 Android 应用中,常常需要处理不同的 MIME 类型数据,例如图片、音频、视频等。在 Android 中,可以使用 URLConnectionHttpUrlConnection 类来检测 URL 的 MIME 类型。以下是一个简单的示例代码:

代码语言:java
复制

import android.net.Uri;

import android.os.Build;

import android.support.annotation.NonNull;

import android.util.Log;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class UrlMimeDetector {

代码语言:txt
复制
private static final String TAG = "UrlMimeDetector";
代码语言:txt
复制
private static final String DEFAULT_MIME_TYPE = "application/octet-stream";
代码语言:txt
复制
private String mimeType = DEFAULT_MIME_TYPE;
代码语言:txt
复制
public UrlMimeDetector() {
代码语言:txt
复制
}
代码语言:txt
复制
public String getMimeType(String url) {
代码语言:txt
复制
    if (!url.startsWith("http")) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    Uri uri = Uri.parse(url);
代码语言:txt
复制
    String path = uri.getPath();
代码语言:txt
复制
    if (path == null) {
代码语言:txt
复制
        path = "";
代码语言:txt
复制
    }
代码语言:txt
复制
    String extension = getExtension(path);
代码语言:txt
复制
    if (extension == null) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    mimeType = getMimeTypeFromExtension(extension);
代码语言:txt
复制
    if (mimeType == null) {
代码语言:txt
复制
        return DEFAULT_MIME_TYPE;
代码语言:txt
复制
    }
代码语言:txt
复制
    return mimeType;
代码语言:txt
复制
}
代码语言:txt
复制
private String getExtension(String path) {
代码语言:txt
复制
    if (path.length() == 0) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    int dotIndex = path.lastIndexOf(".");
代码语言:txt
复制
    if (dotIndex == -1) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    return path.substring(dotIndex + 1);
代码语言:txt
复制
}
代码语言:txt
复制
private String getMimeTypeFromExtension(String extension) {
代码语言:txt
复制
    if (extension == null) {
代码语言:txt
复制
        return null;
代码语言:txt
复制
    }
代码语言:txt
复制
    if (extension.equals("pdf")) {
代码语言:txt
复制
        return "application/pdf";
代码语言:txt
复制
    } else if (extension.equals("png")) {
代码语言:txt
复制
        return "image/png";
代码语言:txt
复制
    } else if (extension.equals("jpg") || extension.equals("jpeg")) {
代码语言:txt
复制
        return "image/jpeg";
代码语言:txt
复制
    } else if (extension.equals("gif")) {
代码语言:txt
复制
        return "image/gif";
代码语言:txt
复制
    } else if (extension.equals("bmp")) {
代码语言:txt
复制
        return "image/bmp";
代码语言:txt
复制
    } else if (extension.equals("txt")) {
代码语言:txt
复制
        return "text/plain";
代码语言:txt
复制
    } else if (extension.equals("json")) {
代码语言:txt
复制
        return "application/json";
代码语言:txt
复制
    } else if (extension.equals("xml")) {
代码语言:txt
复制
        return "text/xml";
代码语言:txt
复制
    } else if (extension.equals("zip")) {
代码语言:txt
复制
        return "application/zip";
代码语言:txt
复制
    } else if (extension.equals("7z")) {
代码语言:txt
复制
        return "application/x-7z-compressed";
代码语言:txt
复制
    } else if (extension.equals("flv")) {
代码语言:txt
复制
        return "video/x-flv";
代码语言:txt
复制
    } else if (extension.equals("mp4")) {
代码语言:txt
复制
        return "video/mp4";
代码语言:txt
复制
    } else if (extension.equals("mov")) {
代码语言:txt
复制
        return "video/quicktime";
代码语言:txt
复制
    } else if (extension.equals("avi")) {
代码语言:txt
复制
        return "video/x-msvideo";
代码语言:txt
复制
    } else if (extension.equals("wmv")) {
代码语言:txt
复制
        return "video/x-ms-wmv";
代码语言:txt
复制
    } else if (extension.equals("html")) {
代码语言:txt
复制
        return "text/html";
代码语言:txt
复制
    } else if (extension.equals("css")) {
代码语言:txt
复制
        return "text/css";
代码语言:txt
复制
    } else if (extension.equals("js")) {
代码语言:txt
复制
        return "application/javascript";
代码语言:txt
复制
    } else if (extension.equals("json")) {
代码语言:txt
复制
        return "application/json";
代码语言:txt
复制
    } else if (extension.equals("pdf")) {
代码语言:txt
复制
        return "application/pdf";
代码语言:txt
复制
    } else if (extension.equals("txt")) {
代码语言:txt
复制
        return "text/plain";
代码语言:txt
复制
    } else if (extension.equals("xml")) {
代码语言:txt
复制
        return "text/xml";
代码语言:txt
复制
    } else if (extension.equals("svg")) {
代码语言:txt
复制
        return "image/svg+xml";
代码语言:txt
复制
    } else if (extension.equals("ttf")) {
代码语言:txt
复制
        return "application/x-font-ttf";
代码语言:txt
复制
    } else if (extension.equals("
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MIME类型:从限定选择文件类型MIME类型 前后端设置

(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )媒体类型(通常称为 Multipurpose Internet Mail Extensions... 或 MIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式。...互联网号码分配机构(IANA)是负责跟踪所有官方MIME类型的官方机构,您可以在媒体类型页面中找到最新的完整列表。...https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types下面是个人增补的表格:类型描述典型示例text表明文件是普通文本...表单部分具体参看 《from属性EncType提交数据的格式详解—在angular中的应用》服务器端,设置,看截图转载本站文章《MIME类型:从限定选择文件类型MIME类型 前后端设置》,请注明出处:

94710

补习系列-springboot mime类型处理

目标 了解http常见的mime类型定义; 如何使用springboot 处理json请求及响应; 如何使用springboot 处理 xml请求及响应; http参数的获取及文件上传下载; 如何获得原始请求的字节流...IETF RFC 6838,对HTTP传输内容类型进行了全面定义。 而 IANA(互联网号码分配机构)是负责管理所有标准MIME类型的官方机构。...可以在这里)找到所有的标准MIME 服务器通过MIME告知响应内容类型,而浏览器则通过MIME类型来确定如何处理文档; 因此为传输内容(文档、图片等)设置正确的MIME非常重要。...application 应用数据 multi-part 复合内容 而二级类型则非常多,以下是一些常用的MIMEMIME 描述 audio/wav wave音频流媒体文件 audio/webm...本文介绍了常见的MIME类型,并结合springboot框架的代码样例,讲述如何完成Json/xml/字节流等常见类型的内容处理。

2K20

MIME 类型大全,你值得收藏

互联网号码分配机构(IANA)是负责跟踪所有官方MIME类型的官方机构,您可以在媒体类型页面中找到最新的完整列表。...浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的。...subtype 表示细分后的每个类型MIME类型对大小写不敏感,但是传统写法都是小写。...使用 application/octet-stream 作为特殊处理是不被允许的:对于一般的MIME类型浏览器不允许定义默认行为(比如“在Word中打开”) MIME 嗅探 在缺失 MIME 类型或客户端认为文件设置了错误的...MIME 类型时,浏览器可能会通过查看资源来进行MIME嗅探。

1.5K00

「Go开源包」mimetype:一个支持172种MIME类型检测的包

今天给大家推荐一个Go的开源包:mimetype,一个快速的检测媒体类型和文件类型的包,共支持172种MIME类型。...项目地址:https://github.com/gabriel-vasile/mimetype 支持的MIME类型 下面是截取一部分支持的类型,详细的类型可参考链接:https://github.com...Detect函数可以基于字节数组、文件进行检测。但其底层原理都是先将内容读取出来,然后再根据已定义的类型类依次进行对应的特征匹配。...,明明在支持的类型列表中,但却检测不到。...这样,在检测的过程中,只要检测到了zip类型,就不需要再检测是否是文本类型的文件了。然后再深入检测具体的office类型即可。如下: 特别说明:你的关注,是我写下去的最大动力。

39330

【Java 进阶篇】Java ServletContext详解:获取MIME类型

本篇博客将深入探讨MIME类型的概念,以及如何使用ServletContext获取文件的MIME类型。 什么是MIME类型MIME类型是一个字符串,用于标识文件的内容类型。...使用ServletContext获取MIME类型 在Java Web应用程序中,ServletContext对象提供了一个方法来获取文件的MIME类型。...filename作为请求参数,然后使用ServletContext获取文件的MIME类型,并将MIME类型输出到浏览器。...例如,如果您将Servlet部署到Tomcat的根目录下并命名为MimeTypeServlet,则可以通过以下URL访问: http://localhost:8080/MimeTypeServlet/getMimeType...filename=sample.jpg 这将显示文件sample.jpg的MIME类型。 总结 MIME类型在Java Web应用程序中非常重要,它告诉浏览器如何处理文件。

30940

源码解析-url状态检测神器ping-url

前言 ping-url是我最近开源的一个小工具,这篇文章也是专门写它设计理念的科普文。 为什么会做这个ping-url开源工具呢?...正常发起url请求 ?监听请求状态 有了思路,就开始撸起袖子加油干! 一、判断url是否可访问 由于浏览器的安全机制——同源策略的存在,要实现任意这个要求确实有点难。...而要检测url,通常都是html。 所以onerror事件可以用于监听发起请求,到接收到反馈error所花费的时间。这样,就可以直接算出网络访问的延时。 但是,很遗憾,准确率并不是100%。...只要触发这个事件,则证明url不是死链。 这样,就可以帮onerror排除意外情况,让准确率达到100%!...因此,计算网络延时这块,ping-url还是用最保守的。

1.8K40

用机器学习玩转恶意URL检测

先说重点,这篇文章使用逻辑回归的方式建立检测模型,对未知的 URL 进行恶意检测。 模型建立的整体思路如下: 1. 分别拿到正常请求和恶意请求的数据集。 2. 对无规律的数据集进行处理得到特征矩阵。...使用机器逻辑回归方式使用特征矩阵训练检测模型。 4. 最后计算模型的准确度,并使用检测模型判断未知 URL 请求是恶意的还是正常的。...URL 进行预测,判断的结果如下: ?...5、总结 本文的目的是希望从代码的角度上分析如何机器学习算法来训练URL恶意检测模型,当然训练检测模型的方式有许多种,比如 SVM 或是其他机器学习算法,想了解 SVM 的可以看兜哥先前发的文章。...基于逻辑回归的恶意 URL 检测很依赖于训练数据集,有必要保证原始数据集尽可能的减少噪点(异常数据),以及每条数据之间尽可能的减少关联性。

5.7K90

如何检测数据类型

:= interface{}(container).([]int)这句代码的含义解释一下 interface{}(container)是把container转换为空接口 .([]int)判断前者的类型是否为切片类型...如果container 为 []int 类型,那么value就是类型转换后的值 如果container 不是 []int 类型呢? 那么程序就会抛出一个panic 如下截图 ?...(T) 这个就是类型转换公式,注意几点 1.x必须是接口类型,具体哪个接口类型无所谓,你可能疑惑什么是接口类型,请查阅接口类型 2.interface{} 代表空接口类型, {} 可以表示空的数据块,...也可以表示不包含任何内容的数据结构, 比如 struct{} 表示不包含任何方法和字段的的空结构体;[]string{}表示空切片 map[int]string{} 空字典 3.T就做类型字面量,即数据类型...,通俗的讲就是用字符表示弄一种数据类型结构 ---- 类型转换 T(x) package main import "fmt" func main(){ value:= int('9') fmt.Println

49120

Js检测数据类型

instanceof instanceof是用来检测A是不是B的实例,表达式是A instance B,返回的是boolean,instanceof检测的是原型,所以他的检测方式是,查看A的prototype...false,所以是错误的,单纯的定义一个字面量是无法通过instanceof进行检测的,如果我们要对其检测,需要通过new方式,就可以了。...let str = new String('我是字符串') console.log(str instanceof String) //true 检测引用数据的类型全部正确,所以一般来讲这个方法我们是用于检测引用数据类型的...,所以看完这个大家应该明白,直接Object.prototype上面的toString才可以检测数据类型。...需要注意的是 检测类型的返回值并不是直接可以使用 是这种格式的[object Array],需要自己进行处理,后面的就是我们的格式 封装 日常开发中,最为准确的就是第三中方法,所以,这里我们来封装一个检测数据类型的方法

2.9K40
领券