Vue element ui + AmazonS3上传文件功能

这篇具有很好参考价值的文章主要介绍了Vue element ui + AmazonS3上传文件功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、在上传之前,需要先获取到AWS的S3服务的Access key ID和Secret access key

二、代码代码:

<template>
    <div class="upload">
        <!-- 我这里使用的是el-upload的http-request自定义上传事件,action用不上,但是不写值会报错,所以我也写上了,但是其实并没有用到~ -->
        <el-upload :show-file-list="false" drag :http-request="handleFileChange" class="upload-demo"
            action="your upload address" multiple>
            <el-button><i class="el-icon-upload"></i>Upload</el-button>
        </el-upload>
    </div>
</template>

<script>
// 需要安装aws-sdk 再引入哦~
import AWS from "aws-sdk";

export default {
    data() {
        return {
            s3: new AWS.S3({
                // AWS 认证相关
                apiVersion: "2006-03-01",
                accessKeyId: "填自己的",
                secretAccessKey: "填自己的",
                region: "填自己的",
            }),
            videoUpload: null,
            videoLoading: false, // 防止再次点击
            videoFileName: "", // 文件名称
            videoSuffix: "", // 文件后缀
        };
    },

    methods: {
        handleFileChange(e) {
            var that = this;
            let file = e.target.files[0];
            console.log("file change", file);

            if (file) {
                that.videoFileName = file.name;
                that.videoLoading = true;
                that.videoSuffix = that.videoFileName.split(".")[1];

                var key = new Date().getTime() + "_" + "." + that.videoSuffix;
                var params = {
                    Bucket: "填自己的", // 存储桶名称
                    Key: key, // 文件名,重名会覆盖
                    Body: file,
                };
                that.videoUpload = that.s3.upload(params, function (err, data) {
                    if (err) {
                        console.log("发生错误:", err.code, err.message);
                        that.videoLoading = false;
                    } else {
                        console.log("上传成功, 返回结果");
                        console.log(data);
                        console.log(data.Location); //上传文件在S3的位置
                    }
                });
            }
        },
    },
};
</script>

别忘记安装AWS.S3!!

npm i aws-sdk  // 安装aws-sdk

三、如果上传失败,报此错误:ETagMissing No access to ETag property on response. Check CORS configuration to expose ETag header.

解决方案:找到配置的存储桶——权限——跨源资源共享(CORS),配置如下

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag",
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    },
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag",
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    },
    {
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag",
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

参考文章:

https://www.jianshu.com/p/2bd8717d2d89文章来源地址https://www.toymoban.com/news/detail-572185.html

到了这里,关于Vue element ui + AmazonS3上传文件功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue+element ui 实现文件上传下载

    2024年02月14日
    浏览(50)
  • 基于vue+Element UI的文件上传(可拖拽上传)

    drag: 支持拖拽上传 action:必选参数,上传的地址 ref:这里主要是用于文件上传完成后清除文件的 on-remove:文件列表移除文件时的钩子 auto-upload:是否在选取文件后立即进行上传 on-change:文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用 注:这里使用的

    2023年04月08日
    浏览(46)
  • vue+element ui 文件上传之文件缩略图缩略图

    文件缩略图按官方文档说的是使用  scoped-slot  去设置缩略图模版。且需要上传的是图片,因为有预览等功能,如果上传的不是图片,会显示不出来。 这里设置了图片的格式等,用户在选择的时候,会自动校准图片格式,官方文档中提供了before-upload方法,可以防止用户在选择

    2024年02月11日
    浏览(82)
  • Vue3 + Element UI 实现文件上传弹出框

    Vue3 + Element UI 实现文件上传 实现如下: 1.首页添加按钮点击弹出文件框 给dialog设置传参 展示对话框,设置 页面部分代码如下: 语法部分代码如下: 2.弹出框 页面部分代码如下: 语法部分代码如下 上述实现弹出框上传文件事件,当文件上传后需要更新文件管理展示页面,

    2024年02月11日
    浏览(63)
  • vue+element ui 关于表格中多行增加上传文件操作

    先创建一个表格标签,表格中需要先写上上传文件的组件 在data中定义一个表格数组,数组中的fileIdList是我需要存储的信息,可自行参考 表格多行上传的难点在于,需要把上传的文件和表格中的行一一对应,所以在handleSuccess和handleRemove方法中多传入了一个scope,scope参数是自

    2024年02月14日
    浏览(48)
  • 基于vue element-ui 封装上传图片组件 功能:上传,删除,预览,上传图片水印,拖拽排序,上传进度条等

    我们在开发后台时肯定避免不了上传图片的功能 例如: 上传图片回显 上传完成 : 预览查看 , 删除等 如果是图片列表,还可能让你拖动图片排序 有的后台项目可能要给图片添加水印,添加标记 有的后台可能要炫酷一点 添加进度条功能 现在我们要完成上面的一系列功能,这里我

    2024年02月16日
    浏览(60)
  • Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

    当我们在使用 Element ui,Upload组件时,官网默认的基础配置如下 现在的需求是,如果页面只有 一个 el-upload组件,需要上传的文件,根据不同的类型,切换不同的action 上传路径。 首先我这里选择,通过调用 before-upload 上传文件之前的钩子函数,函数接收一个参数,就是上传的

    2024年02月11日
    浏览(43)
  • vue结合element ui 实现多个文件上传、并删除不符合条件的

    多个文件上传的核心就是将文件append进FormData的实例中,向后台请求时将实例对象传送过去。  多个文件上传,传送的数据: html部分: js部分(this.$request是我自定义的请求方式,大家可以根据自身需要来调整): 1. 我们想要的效果是手动一次性上传多个文件,但是文件选取

    2024年03月20日
    浏览(63)
  • AmazonS3对象存储

    平时都是直接用的各个 oss 的各自的 sdk ,然后发现有一个 amazon s3 sdk ,主流的 oss 基本都支持 s3 协议,可以统一访问任何数据。 amazon s3 全称是 Amazon Simple Storage Service ,本身是 amazon 提供的一个对象存储服务。 S3最大功能是存储类和生命周期管理。 S3标准存储 经常访问的对象的存

    2024年02月11日
    浏览(25)
  • vue3 - element-plus 上传各种 word pdf 文件、图片视频并上传到服务器功能效果,示例代码开箱即用。

    在 vue3 项目中,使用 element plus 组件库的 el-upload 上传组件,进行文件、图片图像的上传功能示例。 可直接复制,再改个接口地址。 在这里上传

    2024年02月15日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包