vue 文件上传至服务器_oss文件服务器

vue 文件上传至服务器_oss文件服务器为什么使用对象存储OSS很多企业的文件上传下载都是通过文件流的形式进行上传下载的,需要后端配合,对服务器压力很大,而且高消费,对公司损失太大,我们选择使用oss将尽可能地缩小成本,以及对网站及逆行大幅度提升使用对象存储OSS改变了什么网站数据动静分离,大幅提升网页性能 单独的文件管理界面,管理网站文件和本地电脑一样高效率方便使用 成本低,资源弹性伸缩,按需付费什么是对象存储OSS阿里云对象存储OSS(ObjectStorageService)是一款海量、安全、低成本、高可靠的云存储

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

为什么使用对象存储OSS

很多企业的文件上传下载都是通过文件流的形式进行上传下载的,需要后端配合,对服务器压力很大,而且高消费,对公司损失太大,我们选择使用oss将尽可能地缩小成本,以及对网站及逆行大幅度提升

使用对象存储OSS改变了什么

  1. 网站数据动静分离,大幅提升网页性能
  2. 单独的文件管理界面,管理网站文件和本地电脑一样高效率方便使用
  3. 成本低,资源弹性伸缩,按需付费

什么是对象存储OSS

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。

在项目中使用

  1. 安装 ali-oss第三方库

    npm install ali-oss --save
    or
    yarn add ali-oss
  2.  在项目中新建一个oss.js文件(用于放置我们的配置项)

    import OSS from 'ali-oss'
    // or
    // const OSS = require('ali-oss')
    
    export const client = new OSS({
        region: 'oss-cn-hangzhou', // oss地址
        accessKeyId: 'xxxxxxxxxxx', // 通过阿里云控制台创建的AccessKey ID。
        accessKeySecret: 'xxxxxxxxxxx', // 通过阿里云控制台创建的AccessKey Secret。
        bucket: 'xxxxxxxxxxx', // 仓库名字
        useFetch: true, // 支持上传大于100KB的文件
        secure:true // 返回的url为https
    })
    
    export const headers = {
        // 指定该Object被下载时网页的缓存行为。
        "Cache-Control": "no-cache",
        // 指定该Object被下载时的名称。
        "Content-Disposition": "inline",
        // 指定该Object被下载时的内容编码格式。
        "Content-Encoding": "UTF-8",
        // 指定过期时间。
        Expires: "Wed, 08 Jul 2023 16:57:01 GMT",
        // 指定Object的存储类型。
        "x-oss-storage-class": "Standard",
        // 指定Object的访问权限。
        // "x-oss-object-acl": "private",
        // 设置Object的标签,可同时设置多个标签。
        "x-oss-tagging": "Tag1=1&Tag2=2",
        // 指定CopyObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。
        "x-oss-forbid-overwrite": "true",
        // "secure": "true"
    };
  3.  在组件中使用

    <template>
      <div class="upload">
        <el-upload ref="upload" style="display: inline-block;" action="" :limit="1" :http-request="httpRequest"
          :on-remove="handleRemove" :on-change="onChange" :before-upload="beforeAvatarUpload"
          :on-success="handleUploadSuccess" :file-list="fileList">
          <el-button type="info" size="mini">点击上传</el-button>
        </el-upload>
      </div>
    </template>
    
    <script>
    export default {
        data(){
        return {
            fileList: [],
            url: ''
        }
      },
         methods: {
            onChange(file, fileList) {
              console.log(file, 'file', fileList, 'Filest');
              this.fileList = fileList
            },
            handleUploadSuccess(response, file, fileList) {
              console.log(response, file, fileList, 'response, file, fileList')
            },
            handleRemove(e, fileList) {
              this.fileList = fileList;
            },
            beforeAvatarUpload(file) {
              // 文件大小校验
              const isLt2M = file.size / 1024 / 1024 < 10;
              if (!isLt2M) {
                this.$message.error('文件大小不能超过 10M !');
              }
              return isLt2M;
            },
            httpRequest(file) {//阿里云OSS上传
              //判断扩展名
              const tmpcnt = file.file.name.lastIndexOf(".") // 获取.的下标
              const uploadFileName = file.file.name.substring(0, tmpcnt) // 获取文件名
              console.log(uploadFileName, '文件名——uploadFileName');
              const exname = file.file.name.substring(tmpcnt + 1) // 获取后缀名
              console.log(exname, '后缀名');
              const names = ['jpg', 'jpeg', 'webp', 'png', 'bmp', 'exe', 'yml']
              if (names.indexOf(exname) < 0) {
                this.$message.error("不支持的格式!")
                return false
              }
              const fileName = uploadFileName
              console.log(fileName, '文件名');
              client.put(
                fileName,
                file.file,
                {
                  headers
                },
              ).then(res => {
                console.log(res, 'res---header ');
                // this.handleUploadSuccess()
                //   if (res.url) {
                //     this.url.push(res.url)
                //   } else {
                //     this.$message.error('文件上传失败')
                //   }
              }).catch(err => {
                console.log(err, 'err');
              })
        }
      }
    }
    </script>
    
    
  4.  上传成功,返回一个对象里边包含上传成功的url和上传的文件名vue 文件上传至服务器_oss文件服务器

  5.  上传完毕

注意点:

  1. 本地上传oss是http,服务器是https的就会出现问题,需要在oss.js文件里边配置,配置完之后在上传一下,就能看到返回的url是https
    secure:true // 返回的url为https
  2.  跨域之类的问题让运维配置下就可以了

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 尺度空间原理_多尺度分割算法原理

    尺度空间原理_多尺度分割算法原理转自点击打开链接http://www.cnblogs.com/ronny/p/3886013.html1.特征的不变性何谓特征?每个物体,我们总可以用一些词语或部件来描述它,比如人脸的特征:两个眼睛、一个鼻子和一个嘴巴。对于图像而言,我们需要计算机去理解图像,描述图像就需要计算机去取得图像的特征,对图像比较全面的描述即一个二维矩阵,矩阵内的每个值代表图像的亮度。有时候我们需要

    2022年10月14日
    4
  • 数据仓库之DWD层

    数据仓库之DWD层DWD(DataWareHouseDetail)数据明细层,主要是将从业务数据库中同步过来的ODS层数据进行清洗和整合成相应的事实表。事实表作为数据仓库维度建模的核心,需要紧紧围绕着业务过程来设计。在拿到业务系统的表结构后,进行大概的梳理,再与业务方沟通整个业务过程的流转过程,对业务的整个生命周期进行分析,明确关键的业务步骤,在能满足业务需求的前提下,尽可能设计出更通用的模型。业务方有时只仅仅只是考虑了当下的情况。例如业务想要一个审核通过人员的明细数据,我们设计了一个全量的审核明细表,过了几天,业务

    2022年6月26日
    43
  • 编程之美初赛第一场 树[通俗易懂]

    编程之美初赛第一场 树

    2022年2月2日
    46
  • socket默认端口号(socket和端口的关系)

    from:http://www.iana.org/assignments/port-numbers
     
    ////////////////////////////////////////////////////////////////////////////////
     PORTNUMBERS(lastupdated2010-09-24)Theportnumbersaredividedintothreeranges:theWel

    2022年4月17日
    179
  • Javadoc 使用详解

    Javadoc 使用详解一:简介Javadoc用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html二:写在类上面的Javadoc写在类上的文档标注一般分为三段:第一段:概要描述,通常用一句或者一段话简要描述该类的作用,以英文句号作为结束第…

    2025年12月8日
    3
  • 电子元器件常用品牌汇总(持续更新)

    电子元器件常用品牌汇总(持续更新)电阻:Yageo国巨、Fenghua风华、Rohm罗姆、TDK、Samsung三星、Uniohm厚声、Walsin华新科、Ralec旺诠、KOA兴亚、Panasonic松下、AVX、TMTEC泰铭、Kyocera京瓷、PHYCOM飞元。电容:Yageo国巨、Fenghua风华、Murata村田、TDK、Samsung三星、Eyang宇阳、Taiyo太诱、Kyocera京瓷、HEC禾伸堂、Kemet基美、ISND华信安、AVX、Nichicon尼吉康、Panasonic松下、SANYO三洋。电感:Mura

    2022年6月29日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号