vue 上传图片到阿里云(前端直传:不推荐)

为何要这样做:减轻后端数据库压力(个人觉得于前端没啥用,谁返回来都行)



代码部分:


    <template>
      <div class="upLoad">
        <div class="file">上传图片
          <input type="file" :accept="typeArr" @change="upload($event)">
        </div>
      </div>
    </template>
    <style lang="less" scoped>
      .file {
        position: relative;
        left: .26rem;
        top: .2rem;
        display: inline-block;
        background: #32d582;
        border: 1px solid #99D3F5;
        border-radius: 4px;
        padding: 4px 12px;
        overflow: hidden;
        color: white;
        text-decoration: none;
        text-indent: 0;
        line-height: 20px;
      }

      .file input {
        position: absolute;
        font-size: 100px;
        right: 0;
        top: 0;
        opacity: 0;
      }
    </style>
    <script>
      export default{
        props: ['typeArr', 'size'],
        data(){
          return {
            client: '',
            fileSize: 5000000
          }
        },
        methods: {
          getRight(){
            if (this.size) {
              this.fileSize = this.size;
            }
            this.client = new OSS.Wrapper({
              region: "同endpoint",
              secure: true,//https
              endpoint: '运维会告诉你',
              accessKeyId: "id和secret去阿里云控制台获得",
              /*accessKeyId,accessKeySecret两者到阿里云控制台获得*/
              accessKeySecret: "",
              bucket: '' /*装图片的桶名*/
            });
          },
          /**上传图片**/
          upload(event){
            var self = this;
            var file = event.target.files[0];

            var type = file.name.split('.')[1];
            var storeAs = new Date().getTime() + '.' + type;
            var boolean = true;
            if (file.size > this.fileSize) {
              Toast('亲,图片不能超过!' + this.fileSize / 1000 + 'kb');
              return false;
            }
            if (this.typeArr && this.typeArr.indexOf(type) > 0) {
              boolean = false;
            }
            if (boolean) {
              Toast('上传图片格式不支持!请选择' + this.typeArr);
              return false;
            }
            this.getRight();
            this.client.multipartUpload(storeAs, file).then(function (result) {
              console.log(result)//至此就拿到了返回的路径

              self.data.url = result.res.requestUrls[0].split('?')[0];

            }).catch(function (err) {

              console.log(err);
            });

          },
        }
      }
</script>

父组件调用


<up-Load class="files" typeArr="image/png,image/jpg,image/gif,image/jpeg" size="500000">
</up-Load>

注:需引入官网推荐的oss对象的cdn


<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>

需再次强调的是:该代码为前端直传,accessKeyId,accessKeySecret都暴露在外面,更安全的方法可见官网的“服务端签名后上传”(貌似没示例)

原文地址:https://segmentfault.com/a/1190000013153127

原文地址:https://www.cnblogs.com/lalalagq/p/9923594.html

时间: 2024-10-10 19:19:28

vue 上传图片到阿里云(前端直传:不推荐)的相关文章

简单上传图片到阿里云OSS

OSS主要为用户提供数据存储服务,用户可以通过以下操作来处理OSS上的数据: 1.创建.查看.罗列.删除 Bucket: 2.修改.获取Bucket的访问权限: 3.上传.查看.罗列.删除Object/Object Group: 4.访问时支持If-Modified-Since和If-Match等HTTP参数.特点具体如下: 1.易用性:简单易用,便于管理,深度集成数据处理服务: 2.高可靠:多重冗余备份,服务设计可用性不低于99.99%: 3.强安全:多层次安全防护,支持跨区域复制.异地容灾机

vue中上传图片至阿里云oss

1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了下图3 5.点击生成用户右侧的授权,添加如图的授权策略 6.点击角色管理->新建角色,然后创建了一个如下图的H5ROULE角色 7.点击右侧授权,并选择如下图的授权策略 8.在vue组件中使用 <template> <div class="upload"> &

上传图片到阿里云OSS的步骤

啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="提交&quo

Java中使用RestFul接口上传图片到阿里云OSS服务器

1.接口方法 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation

上传图片到阿里云OSS和获取上传图片的外网url的步骤

<form action="/bcis/api/headImgUpload.json" method="post" enctype="multipart/form-data">     <input type="file" name="file">     <input type="submit" value="提交"> </

上传图片到阿里云oss

阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyuncs.com"; private static final String accessKeyId = PropKit.get("accessKeyId"); private static final String accessKeySecret = PropKit.get(&q

阿里云产品9折推荐码

购买阿里云产品时,输入推荐码享受9折优惠,此推荐码不受使用次数限制,长期有效. 推荐码:ntbe5q 

阿里云前端周刊 - 第 28 期

推荐 1. 现代 JavaScript 语法清单 https://github.com/mbeaudru/m... 本文涉及到了现代项目开发中常用的 JavaScript 语法使用以及示例代码的清单 :本指南并不打算从零介绍 JavaScript,而是对于那些有一定基础知识的开发者提供便捷的工具手册.本文依次介绍了变量声明与使用.箭头函数.默认参数.对象解耦.数组使用.扩展操作符.对象属性.Promise.字符串.模块.类.异步编程等内容: 2. 如何优雅的编写JavaScript代码 http

PHP上传文件到阿里云OSS,nginx代理访问

1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint:******** bucket:******** 3.创建 oss.php 上传类 (基于thinkPHP5) <?php namespace app\controller; use OSS\OssClient; class Oss { private static $_instance; priv