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

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

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

没有更多内容

加载失败,请刷新页面

加载更多

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

查看所有标签

猜你喜欢:

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

Practical JavaScript, DOM Scripting and Ajax Projects

Practical JavaScript, DOM Scripting and Ajax Projects

Frank Zammetti / Apress / April 16, 2007 / $44.99

http://www.amazon.com/exec/obidos/tg/detail/-/1590598164/ Book Description Practical JavaScript, DOM, and Ajax Projects is ideal for web developers already experienced in JavaScript who want to ......一起来看看 《Practical JavaScript, DOM Scripting and Ajax Projects》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

HSV CMYK互换工具