在深圳建设网站时,我需要了解哪些SEO来优化我的网站?
摘要:深圳网站seo关键词,我要建网站需要什么,北京网页设计公司兴田德润专业,做门户网站起什么域名好1 前言 最近在开发中遇到文件上传采用Base64的方式上传,记得以前刚开始学http上传文件的时候&
深圳网站seo关键词,我要建网站需要什么,北京网页设计公司兴田德润专业,做门户网站起什么域名好1 前言
最近在开发中遇到文件上传采用Base64的方式上传#xff0c;记得以前刚开始学http上传文件的时候#xff0c;都是通过content-type为multipart/form-data方式直接上传二进制文件#xff0c;我们知道都通过网络传输最终只能传输二进制流#xff0c;所以毫无疑问他们本…1 前言
最近在开发中遇到文件上传采用Base64的方式上传记得以前刚开始学http上传文件的时候都是通过content-type为multipart/form-data方式直接上传二进制文件我们知道都通过网络传输最终只能传输二进制流所以毫无疑问他们本质上都是一样的那么为什么还要先转成Base64呢这两种方式有什么区别带着这样的疑问我们一起来分析下。
2 multipart/form-data上传
先来看看multipart/form-data的方式我在本地通过一个简单的例子来查看http multipart/form-data方式的文件上传html代码如下 html
复制代码
!DOCTYPE html html head title上传文件示例/title meta charsetUTF-8 body h1上传文件示例/h1 form action/upload methodPOST enctypemultipart/form-data label forfile选择文件/label input typefile idfile namefilebr label fortx说明/label input typetext idtx nameremarkbrbr input typesubmit value上传 /form /body /html
页面展示也比较简单 选择文件点击上传后通过edge浏览器f12进入调试模式查看到的请求信息。 请求头如下 在请求头里Content-Type 为 multipart/form-data; boundary----WebKitFormBoundary4TaNXEII3UbH8VKo刚开始看肯定有点懵不过其实也不复杂可以简单理解为在请求体里要传递的参数被分为多部份每一部分通过分解符boundary分割就比如在这个例子表单里有file和remark两个字段则在请求体里就被分为两部分每一部分通过boundary----WebKitFormBoundary4TaNXEII3UbH8VKo来分隔实际上还要加上CRLF回车换行符回车表示将光标移动到当前行的开头换行表示一行文本的结束也就是新文本行的开始。需要注意下当最后一部分结尾时需要加多两个-结尾。 我们继续来看请求体 第一部分是file字段部分它的Content-Type为image/png第二部分为remark字段部分它没有声明Content-Type则默认为text/plain纯文本类型也就是在例子中输入的“测试”到这里大家肯定会有个疑问上传的图片是放在哪里的这里怎么没看到呢别急我猜测是浏览器做了特殊处理请求体里不显示二进制流我们通过Filder抓包工具来验证下。 可以看到在第一部分有一串乱码显示这是因为图片是二进制文件显示成文本格式自然就乱码了这也证实了二进制文件也是放在请求体里。后端使用框架springboot通过MultipartFile接受文件也是解析请求体的每一部分最终拿到二进制流。
