首页 > 其他分享 >JS中文件相关的知识(一):MIME类型

JS中文件相关的知识(一):MIME类型

时间:2023-07-24 19:44:08浏览次数:41  
标签:文件 HTTP text 知识 JS MIME 类型 文件类型

不知道有没有同学和我一样,写代码时一遇到文件操作就犯怵,必须要先去把知识补一遍再说;对于Content-Type、responseType、ArrayBuffer、buffer、blob、file等这些词汇,心里问号一大堆,从来都没有真正区分清楚过;这样下去不是办法呀,真的猛士,应该敢于...

一百次浮于表面,不如一次深入骨髓。我决定尽可能全面的,把自己知道的JS中文件相关的知识总结一遍,虽然麻烦,却一劳永逸。如果还能同时帮助到别人,就更好了!

要了解文件操作,先从了解MIME类型开始。

(1)MIME是什么?

MIME的全名叫多用途互联网邮件扩展(Multipurpose Internet Mail Extensions),它的诞生最初是为了电子邮件,电子邮件最开始只支持传输纯文本,MIME就是为了让它可以支持传输其他数据格式的,比如图片、附件等。后来MIME被推广到其他的协议中,现在最广泛的应用反而是在我们最熟悉的HTTP协议中,请求头和响应头中的Content-Type就是指的MIME类型。在最早的HTTP协议中,是没有数据类型信息的,所有传送的数据都被客户端解释为超文本标记语言HTML文档。正是因为加入了MIME类型,才使得HTTP从只能传输文本,变得丰富多彩。

(2)MIME类型和文件类型是什么关系?

在计算机中,所有文件都是二进制数组,其实本没有文件类型这个概念。文件类型其实指的是它们的编码方式不同,比如文本文件一般是用UTF-8或者ASCII编码,图片用的JPEG编码等,视频用的MPEG-4编码等,这些编码规则都是通用的,所以能编能解。如果程序员用了他自己的一套编码方式,那么计算机就无法解码这个文件,只能统称为“二进制文件”了。

计算机对于不同的文件类型,采取对应的解码方式,来打开这个文件。而MIME类型,作用对象是HTTP协议(在此我们只讨论我们的HTTP协议),让客户端和服务器相互知道,对方发过来的数据是什么类型的,兵来将挡水来土掩,不同的数据类型采取不同的方式来处理。

(3)文件类型和文件扩展名是什么关系?

文件名其实只是一个文件在计算机中存储的路径,和文件内容并无关系,修改文件名(包括扩展名)不会改变文件的内容。而文件类型是由文件编码决定的,所以自然也就不会改变文件的类型。那么文件扩展名的作用是什么呢?它其实只是决定“系统默认打开这个文件的方式”,比如一个psd文件,双击它默认会用PS打开,如果你把后缀改成txt呢,双击就会变成记事本打开,但是打不开啊,因为它其实还是一个psd文件啊。但是此时你把它拖到PS窗口中,它还是能打开的,这说明改了后缀文件类型并没有变。

(4)MIME长什么样?

MIME长这样:主类型/子类型,中间不允许有空格,对大小写不敏感,但一般都是用小写。比如:text/html、application/json、image/png等。MIME的主类型主要有5种:text、image、audio、video、application。

(5)存在的疑问?

在读相关文章时,我看到多处提到有两种MIME类型是特别重要的:text/plain和application/octet-stream,他们分别表示文本文件和其他所有情况的默认值。

text/plain:文本文件默认值。即使它意味着未知的文本文件,但浏览器认为是可以直接展示的。

application/octet-stream:这是应用程序文件的默认值。意思是:未知的应用程序文件,浏览器一般不会自动执行或询问执行。

对此我还不能理解,默认意味着什么?具体表现是?不要紧,下一篇,我们好好把这个问题弄明白。

标签:文件,HTTP,text,知识,JS,MIME,类型,文件类型
From: https://www.cnblogs.com/luzeyu/p/17578151.html

相关文章

  • redis基础知识
    Redis是什么?Redis(RemoteDictionaryServer)远程字典服务,是一个开源的使用ANSIC语言编写、支持网路、可基于内存也可持久化的日志型,key-value(NoSql---->non-relational)数据库Redis的特点?性能极高,基于内存,读的速度是11万次/s,写的速度是81千次/s丰富的数据类型,支持string、has......
  • 前端请求报错:'JSON parse error: syntax error, expect {, actual e…1, line 1, colu
    1、如果不用JSON.stringify(inputJson)包起来就会报错letinputJson={"selectUid":selectUid};varresponse=await$.ajax({type:'POST',url:'xxx',data:inputJson,//正确的是JSON.stringify(inputJson)......
  • ts项目引用js文件
    1、template- index.html-head添加:  <script type="text/javascript" src="<%= BASE_URL %>assets/lib/jquery.js"></script>2、types-j-query.d.ts添加: declare module 'jQuery'3、vue.config.js- configureWebpack-e......
  • SyntaxError: Expected property name or ‘}‘ in JsoN atposition 1
    1、在代码中通过JSON.parse()进行转换,发现如下图所示报错了。其实主要原因是单引号和双引号引起的问题。如果转义的字符串进行了赋值,那么上面一层代码会多了一层的转义。这里加2个JSON.parse()是因为,第一次转换的时候还是个字符串。我们要在json字符串前后手动加上双引号,然后在进......
  • Node.js入门 - 永恒的Hello World!
    文章原作者为LeeJacobson,已经作者授权翻译用于非商业用途。介绍 这是我的关于Node.js系列入门教程的第一篇。必须说明一下,我并不是Node.js的专家,但是尝试向别人解释这是怎么回事是自我学习的一个好方法。如果你发现有些地方并不是那么正确,请提出来让我知道以便修正,谢之。 最近......
  • 使用js实现思维导图
    本文主要阐述使用js实现思维导图的关键技术点,如果还不知道什么是思维导图的同学,请自行度娘。以下是demo和源码的传送门:demo:http://sources.ikeepstudying.com/mindmaptree-master/源码:http://github.com/RockyRen/mindmaptree/tree/master下载:mindmaptree-master 在源码中我使用......
  • PHP数组缓存:三种方式JSON、序列化和var_export的比较
    使用PHP的站点系统,在面对大数据量的时候不得不引入缓存机制。有一种简单有效的办法是将PHP的对象缓存到文件里。下面我来对这3种缓存方法进行说明和比较。第一种方法:JSONJSON缓存变量的方式主要是使用json_encode和json_decode两个php函数。json_encode可以将变量变成文本格式,这......
  • 字典树知识梳理
    字典树目录字典树字典树的介绍字典树的性质字典树的储存实现代码插入询问完结撒花字典树的介绍字典树又名前缀树,是一种用树形结构实现的数据结构,可以高效地存储和检索集合中的数据优点:利用数据的公共前缀来减少查询时间,最大限度地减少无谓的比较缺点:字典树的核心思想是以空......
  • 爬虫 | Python爬虫应该学习什么知识点?
    什么是爬虫如果说把互联网比喻成蜘蛛网,那么爬虫就是在这张网上的蜘蛛,它可以在上面爬来爬去。在互联网中,爬虫就是机器人,你应该对百度和Google很熟悉吧,为什么我们可以很快的从它们的搜索引擎中获取到资料呢?原因就是它们都有自己的爬虫,在整个互联网上,24小时不间断的爬取那些愿意......
  • Converting between XML and JSON
    1ConvertionbetweenXMLandJSONhttp://www.json.org/java/index.html  API:http://www.json.org/javadoc/org/json/XML.htmlpublicclassXMLextendsjava.lang.Object ThisprovidesstaticmethodstoconvertanXMLtextintoaJSONObject,andt......