博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue2.0利用vue-resource上传文件到七牛
阅读量:6430 次
发布时间:2019-06-23

本文共 1523 字,大约阅读时间需要 5 分钟。

关于上传,总是有很多可以说道的。

16年底,公司项目的前端部分,开始了从传统的jqueryvue 2.0的彻底重构。但是上传部分,无论是之前的传统版本,还是Vue新版本,都是在使用着这款优秀的开源库,只是进行了简单的directive化。为什么呢?因为兼容性。没办法,公司项目不等同于个人项目,必须要考虑大多数浏览器。否则,上传部分完全可以利用Vue-Resource以及FormData来抛开对的依赖。这让我深感遗憾,幸好这个简单的遗憾在个人博客Vue化重构的时候得以弥补。

上传流程

七牛上传流程

图不重要看文字

input[type="file"] change事件触发后,先去(如果是图片,可以同时通过FileReader以及readAsDataURL将图片预览在页面上)后台请求七牛的上传token,将拿到的tokenkey以及通过change传递过来的files一起appendformData中。然后将formData通过post传递给七牛,七牛在处理后将返回真正的文件地址

获取token

const qiniu = require('qiniu')const crypto = require('crypto')const Config = require('qiniu-config')exports.token = function*() {    //构建一个保存文件名    //这里没有处理文件后缀,需要自己传递过来,然后在这里处理加在key上,非必须    const key = crypto.createHash('md5').update(((new Date()) * 1 + Math.floor(Math.random() * 10).toString())).digest('hex')    //Config 七牛的秘钥等配置    const [ACCESS_KEY, SECRET_KEY, BUCKET] = [Config.accessKey, Config.secretKey, Config.bucket]     qiniu.conf.ACCESS_KEY = ACCESS_KEY    qiniu.conf.SECRET_KEY = SECRET_KEY    const upToken = new qiniu.rs.PutPolicy(BUCKET + ":" + key)    try {        const token = upToken.token()        return this.body = {            key: key,            token: token        }    } catch (e) {        // throw error    }}//假设api 地址是 /api/token

上传组件 upload.vue

父组件调用

小结

相比于FILEApi 或者其他上传组件,这种方法代码量最小。但是缺点也是显而易见的,大量html5 API的使用,势必会回到兼容性这个老大难上来,慎重的选择性使用吧

本文首发于

转载地址:http://ybiga.baihongyu.com/

你可能感兴趣的文章
Java多线程之ReentrantLock与Condition
查看>>
实验三
查看>>
Vue 项目构建
查看>>
[Ruby on Rails系列]2、开发环境准备:Ruby on Rails开发环境配置
查看>>
在反射中如何调用类中的Setter()AndGetter()方法
查看>>
android studio adb
查看>>
框架源码系列二:手写Spring-IOC和Spring-DI(IOC分析、IOC设计实现、DI分析、DI实现)...
查看>>
asp.net编译 懒人脚本
查看>>
二分答案经典入门题:)
查看>>
为什么你需要将代码迁移到ASP.NET Core 2.0?
查看>>
思杰的雄心——软件定义的工作空间
查看>>
Servlet的多线程和线程安全
查看>>
存储树形的数据表转为Json
查看>>
CAN 总线通信控制芯片SJA1000 的读写
查看>>
oauth授权协议的原理
查看>>
OutputCache说明
查看>>
sdl2.0示例
查看>>
数学 --- 高斯消元 POJ 1830
查看>>
Ejabberd源码解析前奏--集群
查看>>
[ZHUAN]Flask学习记录之Flask-SQLAlchemy
查看>>