http上传文件

http协议上传文件

http协议是建立在tcp、ip协议的应用层规范。

http协议规范把http请求分为3个部分:状态行,请求头,请求体。所有的方法、实现,都是围绕 “如何运用和组织这三部分” 来完成的。

http里没有专门用于文件上传的请求方式,文件上传请求是在post请求基础之上定义出来的一种方式。

 

http协议规定 POST 请求提交的数据,必须放在消息主体(entity-body)中,但协议并没有规定消息主体的编码方式 。开发者可以自己决定消息主体的编码格式,只要最后发送的 HTTP 请求,满足上面的格式就可以。
数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。


Content-Type 被指定为 application/x-www-form-urlencoded 时 ,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式很好的支持,常用的如jQuery中的ajax请求,Content-Type 默认值都是application/x-www-form-urlencoded;charset=utf-8

 

 

Content-Type 请求头报头域

Content-Type 在发送到服务器时候 内容编码方式,它有如下的三个值。
①application/x-www-form-urlencoded:默认的编码方式。但是在用文本的传输和MP3等大型文件的时候,使用这种编码就显得 效率低下。
②multipart/form-data:指定传输数据为二进制类型,比如图片、mp3、文件。
③text/plain:  纯文体的传输。空格转换为 “+” 加号,但不对特殊字符编码。

 

普通的Post请求

请求头

POST /article/handle.php HTTP/1.1
Host: www.soapstudy.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:41.0) Gecko/20100101 Firefox/41.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.soapstudy.com/article/postupload.html
Connection: keep-alive
Content-Length : 65
Content-Type: application/x-www-form-urlencoded

消息体:body

uname=1234&email=12345&file=desktop.jpg&submit=%E6%8F%90%E4%BA%A4

此种方式只是将文件名,通过post方式传输给服务器,仅有名称而无文件信息,上面的Post请求是无法上传文件的。

 

指定传输数据为二进制类型

http协议支持传输二进制类型文件:

1、基础方法是post,需要post请求来组合实现。

2、与其他post方法的不同之处:是请求头的 Content-Type头域  和请求体。

3、传输二进制文件,必须包含一个特殊的头信息:Content-Type

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值