angular - 从 Angular 客户端将文件上传到 Amazon S3?
问题描述
我正在尝试仅将 png 文件上传到 Amazon S3。这是上传系统的架构。
我坚持使用 Angular的第 6 步。
URL 生成代码看起来像 [Node JS/Typescript]
public getWaterMarkURL(payload: any, expiry: number = 20, Bucket: string = SNAP_SENSE_BUCKET_PATH): Promise<any> {
let validationCheck = this.validateView(payload);
if (!validationCheck.status) return Promise.reject({...validationCheck, statusCode: 412});
let Key: string = `watermark/${payload.user_id}/${payload.event_id}/watermark.png`;
let signedURL: string = this.s3.getSignedUrl('putObject', { Bucket, Key, Expires: expiry * 60, ACL: "public-read" });
return Promise.resolve({body: {data: { signedURL }}, statusCode: 201 });
}
文件上传代码看起来像 [Angular 8]
let p: Promise<any>[] = [logoIMG.getBufferAsync(Jimp.MIME_PNG), this.generateSignedURL()];
Promise.all(p).then((respArr: any[]) => {
let image: Buffer = respArr[0];
let url: string = respArr[1];
this.http.put(url, image).subscribe(console.log, console.error);
});
配置
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>Content-Type</AllowedHeader>
</CORSRule>
</CORSConfiguration>
解决方案
推荐阅读
- arrays - 如何发送一个包含数组的 JSON 的 HTTP 响应?([][]字节)
- keras - 如何开发一个与任意大小输入一起工作的层
- python - 使用另一个列表作为参考分离和附加列表中的项目
- python - 将循环中的 Bittrex API 结果添加到 Dataframe
- c# - 如何在特定时间后循环对象每个对象?
- c# - 方法调用返回“参数计数不匹配”作为错误
- c++ - Webbots Visual Studio 交叉编译
- java - 如何更正来自 Eclipse 的红色“导入”错误消息?
- caching - 如何配置 Spring Redis 配置以使用 Hash 而不是字符串序列化
- ruby-on-rails - Visual Studio Code 无法访问 rails -v