Angular / AWS S3 - 使用预签名URL将文件上传到AWS S3
创始人
2024-10-15 04:30:26
0

下面是使用Angular和AWS S3的预签名URL将文件上传到AWS S3的解决方法的代码示例:

  1. 在Angular项目中安装AWS SDK for JavaScript:
npm install aws-sdk
  1. 创建一个名为aws.service.ts的服务来处理与AWS S3的交互:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class AwsService {
  private s3BucketUrl = 'YOUR_S3_BUCKET_URL'; // 替换为您的S3存储桶URL

  constructor(private http: HttpClient) { }

  // 获取预签名URL
  getPresignedUrl(filename: string): Observable {
    return this.http.get(`${this.s3BucketUrl}/presigned-url?filename=${filename}`);
  }

  // 使用预签名URL将文件上传到S3
  uploadFileToS3(file: File, presignedUrl: string): Observable {
    const headers = { 'Content-Type': file.type };
    return this.http.put(presignedUrl, file, { headers });
  }
}
  1. 创建一个名为upload.component.ts的组件来处理文件上传:
import { Component, OnInit } from '@angular/core';
import { AwsService } from 'path-to-aws.service';

@Component({
  selector: 'app-upload',
  templateUrl: './upload.component.html',
  styleUrls: ['./upload.component.css']
})
export class UploadComponent implements OnInit {
  selectedFile: File;

  constructor(private awsService: AwsService) { }

  ngOnInit(): void {
  }

  onFileSelected(event: any): void {
    this.selectedFile = event.target.files[0];
  }

  onUpload(): void {
    if (this.selectedFile) {
      const filename = this.selectedFile.name;

      this.awsService.getPresignedUrl(filename).subscribe((res: any) => {
        const presignedUrl = res.presignedUrl;

        this.awsService.uploadFileToS3(this.selectedFile, presignedUrl).subscribe((response: any) => {
          console.log('File uploaded successfully.');
        }, error => {
          console.error('Error uploading file:', error);
        });
      }, error => {
        console.error('Error getting presigned URL:', error);
      });
    }
  }
}
  1. 创建一个名为upload.component.html的HTML模板来处理文件选择和上传按钮:


请记得替换代码中的YOUR_S3_BUCKET_URL为您的S3存储桶URL。同时,您还需要在AWS S3中配置正确的CORS规则以允许跨域请求。

相关内容

热门资讯

透视透视!云扑克有透视吗(透视... 透视透视!云扑克有透视吗(透视)原来存在有挂(详细辅助玩家教程)1)辅助挂:进一步探索辅助透视大陆,...
总算了解!we-poker靠谱... 总算了解!we-poker靠谱吗,we-poker辅助器,2025新版(有挂攻略);支持2-10人实...
透视能赢!hhpoker底牌透... 透视能赢!hhpoker底牌透视脚本(透视)本来是真的有挂(详细辅助透明挂教程);1、超多福利:超高...
揭秘几款!哈糖大菠萝破解器,p... 1、揭秘几款!哈糖大菠萝破解器,pokermaster破解版,插件教程(有挂辅助);详细教程。2、哈...
透视中牌率!pokemmo辅助... 透视中牌率!pokemmo辅助器手机版下载(透视)本来是真的有挂(详细辅助AI教程)1、机器人多个强...
实操分享!拱趴大菠萝万能挂,w... 实操分享!拱趴大菠萝万能挂,wepoker插件程序激活码,实用技巧(有挂攻略)1、玩家可以在wepo...
透视智能ai!pokemmo辅... 透视智能ai!pokemmo辅助器脚本下载(透视)确实存在有挂(详细辅助新版2025教程)1、首先打...
一分钟快速了解!hhpoker... 自定义wepokerplus到底是挂了吗系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑...
透视新版!竞技联盟透视(透视)... 透视新版!竞技联盟透视(透视)一贯存在有挂(详细辅助曝光教程);1)辅助挂:进一步探索辅助透视大陆,...
终于知道!hhpoker免费辅... 终于知道!hhpoker免费辅助器,pokemmo手机版修改器,教你攻略(有挂辅助);最新版2024...