当前位置:首页>技术>

在html中输出对象中的指定属性值(html五种新增加的属性是)

来源:原点资讯(m.360kss.com)时间:2023-04-17 02:05:40作者:YD166手机阅读>>

在html中输出对象中的指定属性值,html五种新增加的属性是(1)

写在前面

今年国庆假期终于可以憋在家里了不用出门了,不用出去看后脑了,真的是一种享受。这么好的光阴怎么浪费,睡觉、吃饭、打豆豆这怎么可能(耍多了也烦),完全不符合我们程序员的作风,赶紧起来把文章写完。

这篇文章比较基础,在国庆期间的业余时间写的,这几天又完善了下,力求把更多的前端所涉及到的关于文件上传的各种场景和应用都涵盖了,若有疏漏和问题还请留言斧正和补充。

自测读不读

以下是本文所涉及到的知识点,break or continue ?

  • 文件上传原理
  • 最原始的文件上传
  • 使用 koa2 作为服务端写一个文件上传接口
  • 单文件上传和上传进度
  • 多文件上传和上传进度
  • 拖拽上传
  • 剪贴板上传
  • 大文件上传之分片上传
  • 大文件上传之断点续传
  • node 端文件上传
原理概述

原理很简单,就是根据 http 协议的规范和定义,完成请求消息体的封装和消息体的解析,然后将二进制内容保存到文件。

我们都知道如果要上传一个文件,需要把 form 标签的enctype设置为multipart/form-data,同时method必须为post方法。

那么multipart/form-data表示什么呢?

multipart互联网上的混合资源,就是资源由多种元素组成,form-data表示可以使用HTML Forms 和 POST 方法上传文件,具体的定义可以参考RFC 7578。

multipart/form-data 结构

看下 http 请求的消息体

在html中输出对象中的指定属性值,html五种新增加的属性是(2)

  • 请求头:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryDCntfiXcSkPhS4PN 表示本次请求要上传文件,其中boundary表示分隔符,如果要上传多个表单项,就要使用boundary分割,每个表单项由———XXX开始,以———XXX结尾。

  • 消息体- Form Data 部分

每一个表单项又由Content-Type和Content-Disposition组成。

Content-Disposition: form-data 为固定值,表示一个表单元素,name 表示表单元素的 名称,回车换行后面就是name的值,如果是上传文件就是文件的二进制内容。

Content-Type:表示当前的内容的 MIME 类型,是图片还是文本还是二进制数据。

解析

客户端发送请求到服务器后,服务器会收到请求的消息体,然后对消息体进行解析,解析出哪是普通表单哪些是附件。

可能大家马上能想到通过正则或者字符串处理分割出内容,不过这样是行不通的,二进制buffer转化为string,对字符串进行截取后,其索引和字符串是不一致的,所以结果就不会正确,除非上传的就是字符串。

不过一般情况下不需要自行解析,目前已经有很成熟的三方库可以使用。

至于如何解析,这个也会占用很大篇幅,后面的文章在详细说。

最原始的文件上传

使用 form 表单上传文件

在 ie时代,如果实现一个无刷新的文件上传那可是费老劲了,大部分都是用 iframe 来实现局部刷新或者使用 flash 插件来搞定,在那个时代 ie 就是最好用的浏览器(别无选择)。

DEMO

在html中输出对象中的指定属性值,html五种新增加的属性是(3)

这种方式上传文件,不需要 js ,而且没有兼容问题,所有浏览器都支持,就是体验很差,导致页面刷新,页面其他数据丢失。

HTML

选择文件: input 必须设置 name 属性,否则数据无法发送

标题:


复制代码
文件上传接口

服务端文件的保存基于现有的库koa-body结合 koa2实现服务端文件的保存和数据的返回。

在项目开发中,文件上传本身和业务无关,代码基本上都可通用。

在这里我们使用koa-body库来实现解析和文件的保存。

koa-body 会自动保存文件到系统临时目录下,也可以指定保存的文件路径。

在html中输出对象中的指定属性值,html五种新增加的属性是(4)

首页 1 2 3 4 5 下一页

栏目热文

怎样使用echo输出html标记(echo输出两个值)

怎样使用echo输出html标记(echo输出两个值)

在 PHP 中有两个基本的输出方式: echo 和 print。本弹中我们会详细讨论两个语句的用法,并在实例中演示如何使...

2023-04-17 02:35:18查看全文 >>

西瓜视频的水印怎样去掉(西瓜视频里的个人的水印怎么去掉)

西瓜视频的水印怎样去掉(西瓜视频里的个人的水印怎么去掉)

教你简单的一键无痕去除视频中的水印复制视频链接就能去除水印目前已支持去水印的平台视频链接 :抖音、快手、小红书(不可去水...

2023-04-17 02:44:54查看全文 >>

去除西瓜视频中的水印(怎么去掉西瓜视频自带的水印)

去除西瓜视频中的水印(怎么去掉西瓜视频自带的水印)

短视频大热,要说现在是视频时代也不为过,我们经常会在网上下载一些视频,但是有些视频都是带水印的,使用起来比较麻烦,今天就...

2023-04-17 02:09:28查看全文 >>

西瓜视频上的水印怎么去除(怎么去掉西瓜视频自带的水印)

西瓜视频上的水印怎么去除(怎么去掉西瓜视频自带的水印)

平时大家在西瓜、抖音、快手这些平台上下载视频,是如何去除视频中的水印的。想必大家都是在电脑下载一些专业的去水印工具来去除...

2023-04-17 02:00:18查看全文 >>

如何去掉西瓜视频中的水印(怎么去除西瓜视频的水印)

如何去掉西瓜视频中的水印(怎么去除西瓜视频的水印)

最近有朋友在问我,怎么把视频中带有Logo水印标志去除,其实视频中的水印是去不除的,我们只是把视频打上一个马赛克,让马赛...

2023-04-17 02:04:02查看全文 >>

html怎么做判断(html判断条件)

html怎么做判断(html判断条件)

方法1:使用isNaN()函数isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。...

2023-04-17 02:35:56查看全文 >>

html中echo怎么用(html语音标签怎么设置)

html中echo怎么用(html语音标签怎么设置)

功能要求使用echo语句在页面中输出字符串信息。实例代码...

2023-04-17 02:42:38查看全文 >>

html中的target属性(html哪些标签有name属性)

html中的target属性(html哪些标签有name属性)

通常,在网页中使用链接时,如果希望浏览器在新选项卡中打开指定的 URL,就会在 a 标记上添加属性 target = “...

2023-04-17 02:16:21查看全文 >>

html target怎么用(html target属性的使用)

html target怎么用(html target属性的使用)

在我们的开发工程中经常会使用到各种图,所谓的图就是由节点和节点之间的连接所形成的系统,数学上专门有一个分支叫图论(Gra...

2023-04-17 01:59:37查看全文 >>

html里的target(html中的target是干什么的)

html里的target(html中的target是干什么的)

伪类选择器区别于类选择器,类选择器是由用户自己定义的,而伪类选择器是在CSS中已经定义好的选择器。:target对页面某...

2023-04-17 02:15:57查看全文 >>

文档排行