首先文件上传首先想到的发post,当然还有其他的上传协议,我们这里只介绍发post。
post支持四种content-type:
Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。
首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
RFC1867
application/json这个Content-Type都比较熟悉,当然也可以把json放到formData中;
RFC4657
参见RFC,也比较常见。
XML-RFC
在HTML中要有一个包含了文件输入框的form元素,表单里元素的name一定要写,最终形成formData时,是以name作为key值
如果直接在form里写action的话,会刷新表单,同步请求。所以用发送异步post请求方式。
你还可以不借助HTML表单,直接向FormData对象中添加一个File对象或者一个Blob对象:
你还可以使用jQuery来发送FormData,但必须要正确的设置相关选项:
MDN:使用FormData
B. 现在做网页前端的学习路线是什么
初学者必看干货web前端学习路线图,随着移动互联网的发展,web前端逐渐受到企业的重视,前端开发人员的薪资也水涨船高,越来越多的人看好前端行业的发展,想要转行加入。下面,给大家分享一份web前端学习路线图,希望对初学者有所帮助。
Web前端行业的发展,让前端人员能完成比以前更多的职责范围,所以未来前端可以宽口径就业,前景非常好。除此之外,目前web前端工程师日均岗位缺口超50000,平均薪资10820元/月。
对于零基础的人而言,要怎么学习web前端呢?
1、前端页面重构。主要内容为PC端网站布局、Photoshop工具及切图、H5移动端网页布局、HTML5+CSS3新特性与交互。学习目标是完成PC端网站布局,可实现响应式布局,一套代码适配PC端、移动端、平板设备等。
2、前后端网页交互。主要内容为JavaScript语法全面进阶、ES6到ES10新语法实践、jQuery应用及插件使用、设计模式及插件编写、封装JS工具库及WebAPIS、AJAX+PHP+MySQL前后端交互、前端工程化与模块化应用以及PC端全栈开发项目等。学习目标是可以掌握前端工程化工具,如git、gulp、webpack等,搭建项目及开发项目。
3、Node.js+前端框架。主要内容为Node.js全面进阶、Koa2+MongoDB搭建服务、Vue.js框架、React.js框架、小程序云开发与小程序框架、原生APP与混合APP、数据可视化与桌面应用等。学习目标是掌握桌面应用及可视化大数据,实现复杂数据展示类项目,能够独立完成前后台相关功能,胜任HTML5全栈开发工程师职位。
很多学习web前端的朋友都希望在学成后能找到一份满意的工作,所以我们在学习过程中一定要注意实战经验的积累,如果你所学的东西对企业没有用,那你所做的一切都是无用功。
C. 前端做input表单,type=file怎样提交给后台
1、首先,你要对form表单设置下相关属性,增加如下属性:
enctype="multipart/form-data" action="接收上传文件的后台处理URL" method="post"
<form enctype="multipart/form-data" action="" method="post">
<input type="file" <a href="https://www..com/s?wd=id&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">id</a>="choosefile" />
<input type="file" <a href="https://www..com/s?wd=id&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">id</a>="f" style="display:none;" />
<input type="submit" value="上传文件" <a href="https://www..com/s?wd=id&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-" target="_blank" class="-highlight">id</a>="submitBtn" />
</form>
2、编写接收客户端文件上传的后台代码,即上面提到的“接收上传文件的后台处理URL”的相关代码。
3、当点击上面增加的“上传文件”按钮后,将调用action对应的处理方法进行文件上传
因为不知道你是使用什么语句作为后台程序的运行语句,这里没法给出示例。像很多都有现成的插件。
D. 前端上传文件的几种方法
1.表单上传
最传统的图片上传方式是form表单上传,使用form表单的input[type=”file”]控件,打开系统的文件选择对话框,从而达到选择文件并上传的目的。
form表单上传
表单上传需要注意以下几点:
(1).提供form表单,method必须是post。
(2).form表单的enctype必须是multipart/form-data。
javascript学习交流群:453833554
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码。HTML表单如何打包数据文件是由enctype这个属性决定的。enctype有以下几种取值:
application/x-www-form-urlencoded:在发送前编码所有字符(默认)(空格被编码为’+’,特殊字符被编码为ASCII十六进制字符)。
multipart/form-data:不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain:空格转换为 “+” 加号,但不对特殊字符编码。
默认enctype=application/x-www-form-urlencoded,所以表单的内容会按URL规则编码,然后根据表单的提交方法:
method=’get’ 编码后的表单内容附加在请求连接后,
method=’post’ 编码后的表单内容作为post请求的正文内容。
E. multipartfile 文件上传前端怎么用div和ajax
目前的情况下,没有直接ajax提交file的可能 有一些js库你可以使用,他们做的方法往往是在页面新建一个iframe,然后在frame里面建一个file的input组件,然后在那个frame里面走submit 这样就做成了异步的样子,submit那个的form你就可以设置enctype了。
首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。 而本文实现的文件上传也是无页面刷。
F. 求大神前端名词解释:URL、路径、地址、域名,最好能举例说明
这几个词除了url和域名指代非常明确,其他都是翻译的所以有时会有混用的情况——比如A书里说的地址,有可能就是B书里说的url或者路径,但是一般来说解释如下:
url是资源地址——格式如下:
协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
比如:
http://www..com/
file:///C:/Users/computer/Desktop/abcd.pdf
http://192.168.0.1:8080/abcd/a.php?file=abcd
路径一般指文件路径,分为相对路径和绝对路径:
相对路径:../images/a.jpg
绝对路径:C:\
地址一般说的是ip地址:
192.168.0.1
域名说的是由绑定了ip地址,由DNS解析的别名,通俗的说就是我们访问网站的根网址比如:
www..com
这就是一个域名