AWS S3服务使用
2024-10-10 00:34:17
AWS S3是亚马逊的一种文件存储服务使用方便。
一、配置服务
public static class AWS_S3ClientInfo
{
private static readonly string awsAccessKey = "AKIAJOXFZDXXXXX"; private static readonly string awsSecretKey = "6s2AGbNYmhF4xeXXXXXXXXX/"; public static readonly string bucketName = "test"; //提供最基本的一个配置
public static AmazonS3Config config = new AmazonS3Config()
{
//这个地址是固定的,可以不写
//ServiceURL = "http://s3.amazonaws.com", //因为aws服务器是分地区的,这里如果不配置区域会一直报错,还找不到头绪。
RegionEndpoint = RegionEndpoint.APSoutheast1, }; public static IAmazonS3 GetS3ClientInfo()
{
return new AmazonS3Client(awsAccessKey, awsSecretKey, config);
} }
二、调用上传服务
public void UpLoadFile()
{
try
{
using (IAmazonS3 s3Client = AWS_S3ClientInfo.GetS3ClientInfo())
{
var bt = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "../../img/a.txt");
var mm= new MemoryStream(bt);
PutObjectRequest putObjectRequest = new PutObjectRequest();
putObjectRequest.InputStream = mm;
//可以上传string类型
//putObjectRequest.ContentBody = "你好!";
putObjectRequest.BucketName = AWS_S3ClientInfo.bucketName;
putObjectRequest.ContentType = "application/octet-stream";
putObjectRequest.Metadata.Add("Access-Control-Allow-Origin", "*");
//文件的路径
putObjectRequest.Key = $"img/test-6.jpg";
//文件权限
putObjectRequest.CannedACL = S3CannedACL.PublicRead; PutObjectResponse putObjectResponse = s3Client.PutObject(putObjectRequest); mm.Dispose();
Console.WriteLine("结果=" + putObjectResponse.HttpStatusCode); }
}
catch (Exception e)
{
Console.WriteLine("Exception message: {0}", e.Message);
}
}
三、下载服务
using (IAmazonS3 s3Client = AWS_S3ClientInfo.GetS3ClientInfo())
{
GetObjectRequest request = new GetObjectRequest()
{
BucketName = AWS_S3ClientInfo.bucketName,
Key = "s3.txt"
};
//下载
GetObjectResponse response = s3Client.GetObject(request);
response.WriteResponseStreamToFile(AppDomain.CurrentDomain.BaseDirectory + "1.txt");
}
四、删除服务
using (IAmazonS3 s3Client = AWS_S3ClientInfo.GetS3ClientInfo())
{
GetObjectRequest request = new GetObjectRequest()
{
BucketName = AWS_S3ClientInfo.bucketName,
Key = "s3.txt"
}; //删除
s3Client.DeleteObject(request.BucketName, request.Key); }
这个服务在Windows平台上没问题,在linux平台上上传不了,需要添加忽略证书
//忽略验证ssl/tls证书
ServicePointManager.ServerCertificateValidationCallback =(sender, certificate, chain, errors) => true;
最新文章
- Linux下安装流量监控工具iftop
- javascript中的正则表达式学习
- 正则表达式学习笔记(附:Java版示例代码)
- python命令行参数
- Android开发之获取系统版本号
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
- js控制select数据绑定下拉列表
- RunJS推荐用于个人使用(使用方便JS、css实时预览、编辑、管理等功能)
- 纯Python综合图像处理小工具(4)自定义像素级处理(剪纸滤镜)
- spring boot下使用logback或log4j生成符合Logstash标准的JSON格式
- Java语言之循环基础;各个语句的区别
- linux使用.net core 创建简单的MVC
- 欲善其工必先利其器-----ThinkPad E430加装SSD固态硬盘和内存
- 关于expect的实战总结
- TotoiseSVN 使用参考文章
- 移动IP 它最初设想每个人都在编写应用层(7)API而不是传输层(4)API 对于QUIC,连接的标识符不是“套接字”(源/目标端口/地址协议组合)的传统概念,而是分配给连接的64位标识符
- discuz模板引擎
- IntelliJ IDEA 设置代码提示或自动补全的快捷键(Alt+/)
- 899F - Letters Removing
- mybatis 传递多个值的解决办法
热门文章
- 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found
- python学习日记(继承和多态)
- 自动化测试框架【windows版】:JMeter + Ant + Jenkins
- shiro多Realm第一次调用不生效问题
- FFT &; FNT 简要整理
- I/O模型系列之二:Unix的五种网络I/O模型
- Python:Mac 下 MQTT 服务器 Mosquitto 的配置
- jQuery使用():Deferred有状态的回调列表(含源码)
- 开源顶级持久层框架——mybatis(ibatis)——day01
- html的分类与特点