vue element-ui + java 上传文件到七牛云

Journeys end in lovers' meeting.
漂泊止于爱人的相遇。

使用场景:购物网站会涉及到很多图片的展示,存储在服务器很占用资源(个人的一台mac开发既要开发又要扮演服务器),这样开发起来还要考虑路径。想着有没有一种前端上传图片存储,直接返回图片外链来解决。

展示效果:

  • 成功后返回值如下:
  • 七牛云

前端使用的是upload上传组件,需要仔细看文档

<template>
  <div>
     <el-form-item label="缩略图" prop="smallModelPhoto">
     <el-upload
             action="http://upload-z0.qiniu.com"
             :accept="accept"
             list-type="picture"
             :limit=1
             :data="uptoken"
             :before-upload="beforeAvatarUpload"
             :on-remove="handleRemoveChange"
             :on-success="handleSuccessChange"
             :file-list="formData.smallModelPhoto">
         <el-button size="mini" type="primary">点击上传</el-button>
         <div slot="tip" class="el-upload__tip">只能上传jpg/png/gif文件,且单张不超过10M,缩略图只能传一张</div>
     </el-upload>
  </el-form-item>
 </div>
</template>
<script>
  import Config from '../config'
  export default {
    data() {
      return {
        accept: "image/jpeg,image/gif,image/png,image/bmp",
        formData: {
          smallModelPhoto: [],
        },
        uptoken: {
          token: '',
          key: ""
        }
      }
    },
    methods: {
      beforeAvatarUpload(file) {
        this.uptoken.key = file.name;
        const isLt10M = file.size < 10 * 1024 * 1024;
        if (!isLt10M) {
          this.$message.error('上传头像图片大小不能超过 10MB!');
        }
        return isLt10M;
      },
      handleRemoveChange(file, fileList){
        var filelists = [];
        fileList.forEach(function (elem) {
          var item = {
            name: elem.name,
            url: Config.qiniu.action + elem.name
          }
          filelists.push(item);
        })

        this.formData.smallModelPhoto = filelists;
      },
      handleSuccessChange(response, file, fileList) { //上传成功后在图片框显示图片
        var filelists = [];
        fileList.forEach(function (elem) {
          var item = {
            name: elem.name,
            url: Config.qiniu.action + elem.name
          }
          filelists.push(item);
        })
        this.formData.smallModelPhoto = filelists;
      }
    },
    mounted: function () {
      var that = this;
      /**
       * 获取七牛云token
       */
      that.getUptoken = function () {
        that.$http.get("qiniu/getUpToken").then(function (res) {
          that.uptoken.token = res.data.data.upToken;
        })
      }
    }
  }
</script>

七牛云 Java SDK 属于七牛服务端SDK之一,主要有如下功能:

  1. 提供生成客户端上传所需的上传凭证的功能
  2. 提供文件从服务端直接上传七牛的功能
  3. 提供对七牛空间中文件进行管理的功能
  4. 提供对七牛空间中文件进行处理的功能
  5. 提供七牛CDN相关的刷新,预取,日志功能
    Maven
<dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.2.0, 7.2.99]</version>
</dependency>

最简单的上传凭证只需要AccessKeySecretKeyBucket就可以。

String accessKey = "access key";
String secretKey = "secret key";
String bucket = "bucket name";
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
System.out.println(upToken); // 把这个upToken传递给前端

整个操作其实不难,需要仔细看文档,还有不明白的问题欢迎留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,460评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,960评论 2 59
  • 昨天一个久不联系的旧同事,通过微信联系了我。在例行的寒暄之后,抛出了他的目的,希望帮他介绍适龄的单身女孩子。他今年...
    瀞知阅读 492评论 0 0
  • 再过4天,又是一年一度的购物狂欢节:双11。 不知大家的购物车里都装了啥,我的购物车,空空如也。 我为什么不占双1...
    江南一枝花阅读 165评论 2 0
  • 某天刷微博,看到话题#最好的朋友变成陌生人是怎样的体验# 典型知乎体,话说得多总会有点矫情的嫌疑。却因为人在他乡,...
    哈梅林whistling阅读 411评论 3 0