• javascript 上传文件到 aws s3存储桶


    直接上代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <!-- <script src="https://sdk.amazonaws.com/js/aws-sdk-2.410.0.min.js"></script> -->
        <script src="https://sdk.amazonaws.com/js/aws-sdk-2.235.1.min.js"></script>
    </head>
    
    <body>
       <input id="file-chooser" type="file"/>
        <button id="upload-button">Upload</button>
        <p id="results"><p></p>
        <script type="text/javascript">
        /// <reference types="aws-sdk" />
        var credentials = {
            accessKeyId: 'xxxxxxxxxxxxx',
            secretAccessKey: 'xxxxxxxxxxxxxx'
        }; //秘钥形式的登录上传
        AWS.config.update(credentials);
        AWS.config.region = 'xxxxxxxxxxxx'; //设置区域
    
        // create bucket instance
        var bucket = new AWS.S3({ params: { Bucket: 'xxxxxxxxx' } }); //选择桶
        var fileChooser = document.getElementById('file-chooser');
        var button = document.getElementById('upload-button');
        var results = document.getElementById('results');
        button.addEventListener('click', function() {
            var file = fileChooser.files[0];
            if (file) {
                results.innerHTML = '';
                var params = { Key: file.name, ContentType: file.type, Body: file, 'Access-Control-Allow-Credentials': '*', 'ACL': 'public-read' }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
                console.log(params)
                bucket.upload(params, function(err, data) {
                    console.log(err); //打印出错误
                    results.innerHTML = err ? 'ERROR!' : 'UPLOADED.';
                });
            } else {
                results.innerHTML = 'Nothing to upload.';
            }
        }, false);
        </script>
    </body>
    
    </html>

    2.需要在aws s3中的cors进行配置如下图

     附代码

    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <ExposeHeader>ETag</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>

    如果出现 TypeError: m.upload.addEventListener is not a function

    查看是否在文件中引入mock把它去掉就ok了

  • 相关阅读:
    数据库设计范式
    SQL 触发器
    SQL查询上月和本月两个月的语句
    angularjs学习总结 详细教程
    指令
    重复 HTML 元素
    AngularJS 数据绑定
    AngularJS 指令.
    AngularJS 数组
    AngularJS 对象
  • 原文地址:https://www.cnblogs.com/lyjfight/p/12942829.html
Copyright © 2020-2023  润新知