原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

栏目: 编程语言 · 发布时间: 5年前

Vue + ElementUI 如何优雅的上传文件到七牛OSS

  小徐同学 发布于 昨天 16:20

字数 614

阅读 1

收藏 0

Vue.js

开发十年,就只剩下这套 Java 开发体系了 >>> 原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

** 本文的上传模式是前端直传七牛oss模式,后端只负责提供token,避免泄露accessKey **

原文: 原文地址,里面有效果图

1.开通七牛OSS,创建bucket,并且实名认证,详细步骤自己看官网。 传送门

2.引入七牛Java SDK

<dependency>
			<groupId>com.qiniu</groupId>
			<artifactId>qiniu-java-sdk</artifactId>
			<version>[7.2.0, 7.2.99]</version>
		</dependency>

3.引入七牛Java SDK ,提供前端获取token API

public void getToken(){
        String host = PropKit.get("qiniuHost");
        String accessKey = PropKit.get("qiniuAccessKey");
        String secretKey = PropKit.get("qiniuSecretKey");
        String bucket = PropKit.get("qiniuBucket");
        Auth auth = Auth.create(accessKey, secretKey);
        String token = auth.uploadToken(bucket);
        renderJson(RetKit.ok("token", token).set("host",host));
    }

4.Vue 安装七牛提供的sdk

npm install qiniu-js

5.Elment上传组件加入http-request参数,并且把action指向 http://upload.qiniup.com/

<el-upload
      class="avatar-uploader"
      action="http://upload.qiniup.com/"
      :show-file-list="false"
      :on-success="handleAvatarSuccess"
      :before-upload="beforeAvatarUpload"
      :http-request="uploadRequest"
      >
      <img v-if="form.url" :src="form.url" class="avatar">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>

6.编写上传JS,大体是上传的时候先向后台请求token,拿到token后调用七牛sdk直传。next 可以输出上传进度,complete上传完成。

uploadRequest: function(request) {
      getToken().then(res => {
        let token = res.token;
        let host = res.host;
        upload(
          token,
          request,
          next => {
            let total = next.total;
            console.log(total);
          },
          error => {
            console.log(error)
          },
          complete => {
            let hash = complete.hash;
            let key = complete.key;
            this.form.url = host + "/" + key;
            console.log(hash);
            console.log(key);
          }
        )
});
handleAvatarSuccess(res, file) {
      this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isLt2M) {
        this.$message.error("上传头像图片大小不能超过 2MB!");
      }
      return isLt2M;
}
import * as qiniu from 'qiniu-js'
// token 找后端,obj 这里指代从 el-upload 接收到的 object
export const upload = (token, obj,next,error,complete) => {
    const {
        file
    } = obj

    // 关于 key 要怎么处理自行解决,但如果为 undefined 或者 null 会使用上传后的 hash 作为 key.
    const key = formatDate(new Date(),"yyyyMMddhhmmss") + getRandomInt(1000, 9999)

    // 因人而异,自行解决
    const putExtra = {
            fname: "",
            params: {},
            mimeType: [] || null
        },
        //       fname: string,文件原文件名
        // params: object,用来放置自定义变量
        // mimeType: null || array,用来限制上传文件类型,为 null 时表示不对文件类型限制;限制类型放到数组里: ["image/png", "image/jpeg", "image/gif"]
        config = {
            useCdnDomain: true,
            region: qiniu.region.z2
        }

    let options = {
        quality: 0.92,
        noCompressIfLarger: true,
        maxWidth: 1000,
        maxHeight: 618
    }

    qiniu.compressImage(file, options).then(data => {
        // 调用sdk上传接口获得相应的observable,控制上传和暂停
        let observable = qiniu.upload(data.dist, key, token, putExtra, config);
        let subscription = observable.subscribe(next,error,complete);
        return subscription
    }).catch(res => {
        console.log(res)
        return res
    })
}
原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

© 著作权归作者所有

共有人打赏支持

上一篇: 花十分钟时间给JFinal写了个tio插件

下一篇: ElmentUI Select 有个坑要注意下

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

小徐同学

粉丝 44

博文 11

码字总数 5432

作品 0

广州

程序员

提问

相关文章 最新文章

分享一个高性能灵活的多页面Vue脚手架

最近搭了个脚手架,主要特点是: 自由控制开发哪个项目,可单页可多页 可自由配置外部cdn 可上传至七牛或阿里的存储空间 性能高,灵活。 遂推荐一波,希望能帮助到有需要的小伙伴。 github:高...

Jerry12321

10/25

0

0

基于nuxt和iview搭建OM后台管理系统实践(4)-七牛上传组件的封装

目录结构 这是《基于nuxt和iview搭建OM后台管理系统实践》这一个系列文章的目录,大致思路如下: 简要介绍OM后台管理系统,以及开发环境 自行开发的公共组件,富文本quill[已完成]、地图、上...

愿爱无忧dk_

06/19

0

0

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS
mpvue开发小程序所遇问题及h5转化方案

项目结构 环境及依赖 less-loader,提供嵌套样式,谁用谁知道 flyio提供请求便于请求模块的快速转化h5(flyio提供了h5,小程序的请求封装,参考mpvue中提供的一个例子写拦截器,用于处理后台返回...

a独家记忆

06/23

0

0

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS
Vue+Koa+Mongodb 小练习

Vue+Koa+Mongodb 小练习 作者: Pawn 本文首发: Pawn博客 功能: 基于vue koa mongodb进行登录,注册,留言的简单网站。 体验地址: demo.lcylove.cn github: github.com/LiChangyi/d… 前面...

Pawn2018

09/19

0

0

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS
基于nuxt和iview搭建OM后台管理系统实践(5)-高德地图地块气象数据展示组件的封装

目录结构 这是《基于nuxt和iview搭建OM后台管理系统实践》这一个系列文章的目录,大致思路如下: 简要介绍OM后台管理系统,以及开发环境 自行封装的公共组件,富文本quill[已完成]、地图、上...

愿爱无忧dk_

07/11

0

0

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

没有更多内容

加载失败,请刷新页面

加载更多
Jersey 2.x Glassfish 中基于 Servlet 的应用

如果你使用的是 Glassfish 作为你应用服务器,你不需要在你的引用中包含引用任何东西,所有你需要的都已经包含进去了。 你只需要定义 JAX-RS API 以便于你能够对你的应用进行编辑,使用 (p...

honeymose

今天

4

0

AudioContext技术和音乐可视化(1)

写在最前,测试博客在这里,直接欣赏完成可视化效果。代码不日在github公开,性能目前巨烂,RadialGradient损耗巨大,优化正在提上日程。 转载注明来源。 扒掉网页上js的烦请留下js里的顶端注...

御坂网络路由器

今天

4

0

MongoDB | Linux 安装

Hi,好久不见,有没有想我啊 下载安装包 去 MongoDB Download Center 下载适合自己的版本。 安装 将安装包通过FTP上传到服务器,然后解压要自己的目录。 比如: # 解压tar -zxvf mongodb-li...

JAVA_冯文议

今天

4

0

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS
Redis源码阅读笔记-服务器启动和初始化

服务器的启动 Redis 服务器的main函数是在server.c中。 // server.cint main(int argc, char **argv) { struct timeval tv; int j; /* 对服务器一些常量等进行设置 */ /*...

Jian_Ming

今天

2

0

OSChina 周三乱弹 —— 你们谁给我把盖扣上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ xiaoshiyue:分享Shawn Mendes的单曲《Never Be Alone / Hey There Delilah (Live At Madison Square Garden/ 2016 / Medley)》 《Never B......

小小编辑

今天

57

7

原 荐 Vue + ElementUI 如何优雅的上传文件到七牛OSS

没有更多内容

加载失败,请刷新页面

加载更多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Flask Web开发实战

Flask Web开发实战

李辉 / 机械工业出版社 / 2018-8-1 / 129

这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。 • 国内首本Flask著作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。 • 内......一起来看看 《Flask Web开发实战》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具