Vue-resource如何实现表单提交以及file图片上传的压缩
2017-09-12 12:33
1126 查看
总括:个人在项目开发中所遇到的问题总结,主要介绍两个知识点:
①vue-resource如何实现表单提交。
②file图片上传如何压缩,减少上传压力
vue中的代码
server中的代码
运行效果如下:
一、vue-resource如何实现表单提交
二、file的压缩
知识储备:window.atob()和window.btob(),简而言之就是JavaScript中base64的解码与编码
举个栗子方便了解:
很明显,这种方式是不行的,那么如何让他支持汉字呢,这就要使用window.encodeURIComponent和window.decodeURIComponent
传送门 中间值得一提的是:
atob() 也适用于用JavaScript实现的XPCOM组件,尽管在组件里面 window 不再是全局对象。
推荐一个比较详细的友情链接:http://www.cnblogs.com/liuxianan/p/js-image-compress.html
最后,如果有同学还不满意,还需要压缩更小。
可以还可以使用vue插件 j-i-c 来把上传的图片压缩 传送门
最后的最后,有个很棒的前端压缩图片博客 传送门
①vue-resource如何实现表单提交。
②file图片上传如何压缩,减少上传压力
vue中的代码
let that = this // 上传图片获取url console.log('没处理时的大小:' + this.headerImage100.length) this.$server.uploadHeader(this.headerImage100, (data) => { that.produceImg = data.url if (that.produceImg) { that.putHeader() // 将图片SRC传递给父组件 that.$emit('changeImg', that.produceImg) } }, res => { that.errhandle(res.body) })
server中的代码
/** * 上传头像 * @param file * @param cb * @param err * Server.path.apiCS + 'image' */ uploadHeader (file, cb, err) { function dataURLtoBlob (dataurl) { let arr = dataurl.split(',') let mime = arr[0].match(/:(.*?);/)[1] let bstr = window.atob(arr[1]) let n = bstr.length let u8arr = new Uint8Array(n) while (n--) { u8arr = bstr.charCodeAt(n) } return new window.Blob([u8arr], {type: mime}) } console.log('处理后的大小:' + dataURLtoBlob(file).size) let uploadData = new window.FormData() uploadData.append('upfile', dataURLtoBlob(file), 'image.png') uploadData.append('owner', window.sessionStorage.userId || 111) uploadData.append('group', 'protal') uploadData.append('chmod', '777') uploadData.append('enterpriseId', 1) this.$http.post(Server.path.apiCS + 'image', uploadData).then((res) => { cb(res.data) }, this.error(err)) }
运行效果如下:
一、vue-resource如何实现表单提交
let uploadData = new window.FormData() uploadData.append('upfile', dataURLtoBlob(file), 'image.png')通过使用window.FormData进行数据的处理
this.$http.post(Server.path.apiCS + 'image', uploadData).then((res) => {更多详情,可参考:传送门
二、file的压缩
知识储备:window.atob()和window.btob(),简而言之就是JavaScript中base64的解码与编码
举个栗子方便了解:
var str = 'javascript'; window.btoa(str) //转码结果 "amF2YXNjcmlwdA==" window.atob("amF2YXNjcmlwdA==") //解码结果 "javascript"需要注意:对于转码来说,Base64转码的对象只能是字符串,因此来说,对于其他数据还有这一定的局限性,在此特别需要注意的是对Unicode转码。
很明显,这种方式是不行的,那么如何让他支持汉字呢,这就要使用window.encodeURIComponent和window.decodeURIComponent
var str = "China,中国"; window.btoa(window.encodeURIComponent(str)) //"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=" window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=')) //"China,中国"具体API注意事项
传送门 中间值得一提的是:
atob() 也适用于用JavaScript实现的XPCOM组件,尽管在组件里面 window 不再是全局对象。
推荐一个比较详细的友情链接:http://www.cnblogs.com/liuxianan/p/js-image-compress.html
最后,如果有同学还不满意,还需要压缩更小。
可以还可以使用vue插件 j-i-c 来把上传的图片压缩 传送门
最后的最后,有个很棒的前端压缩图片博客 传送门
相关文章推荐
- ionic—cordova如何一次上传多张图片(类似input file提交表单)
- ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
- 文件上传(jspsmart实现)file和text表单同时提交的问题
- 实现文件上传,以及表单提交成功的回调函数
- ASP小偷程序如何利用XMLHTTP实现表单的提交以及cookies或session的发送
- 实现文件上传,以及表单提交成功的回调函数
- asp小偷程序如何利用xmlhttp实现表单的提交以及cookies或session的发送
- 实现图片预览以及提交表单
- 基于ASP.NET+EasyUI框架实现图片上传提交表单功能(js提交图片)
- MVC3下异步表单提交上传图片实现
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法
- 实现文件上传,以及表单提交成功的回调函数
- 如何实现图片的上传以及将图片保存到Mysql
- 实现向服务器上传图片文件、实现不同方式的form表单提交方式
- java通过模拟post方式提交表单实现图片上传功能实例
- 文件上传(jspsmart实现)file和text表单同时提交的问题
- ASP小偷程序如何利用XMLHTTP实现表单的提交以及cookies或session的发送
- 基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单
- 研究了三天的文件上传(jspsmart实现)file和text表单同时提交的问题
- 基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单