近日项目需要使用AWS S3的API实现文件的上传和下载功能,才发现网上关于.net实现该功能的文章不多,有几篇也都是很老版本的AWS的使用描述了,写法和封装的类等等都基本上报废了。虽然这样,但还是很感谢那几篇文章给我指点了方向。下面我就把实现API的方法提供给大家:
注:此API实现方法是基于AWSSDK.2.3.50.1版本实现的。
1.首先必须拥有 Amazon Web Services 账户才能访问此服务,目前有一定流量的适用,当流量超过之后会自动收费
2.根据提供的Access Key(访问密钥)和Secret Key(秘密密钥)还有 BucketName
private static readonly string _awsAccessKey = "Your Access Key "; private static readonly string _awsSecretKey = "Your Secret Key"; private static readonly string _bucketName = "Your Bucket Name";
3.提供最基本的一个配置,这个地址是固定的
AmazonS3Config config = new AmazonS3Config() { ServiceURL = "http://s3.amazonaws.com" };
4.普通上传方法(基于MVC框架):
///<summary> /// 上传 /// </summary> /// <param name="file"></param> public void Upload(HttpPostedFileBase file) { using (client = new AmazonS3Client(_awsAccessKey, _awsSecretKey, config)) { var request = new PutObjectRequest() { BucketName = _bucketName, CannedACL = S3CannedACL.PublicRead, Key = string.Format("UPLOADS/{0}", file.FileName), InputStream = file.InputStream }; client.PutObject(request); } }
其中CannedACL = S3CannedACL.PublicRead设置上传文件的权限,即可读Key则为上传后的文件名或者唯一标示,这里的file.FileName是包含路径的,可以自己修改为自己希望保存的名称
另外两个不用解释了吧。哈哈,经测试,顺利通过,好高兴~~没有白研究
5.下面是下载方法:
public void Download() { using (client = new AmazonS3Client(_awsAccessKey, _awsSecretKey, config)) { GetObjectRequest request = new GetObjectRequest() { BucketName = _bucketName, Key = "Test" }; GetObjectResponse response = client.GetObject(request); response.WriteResponseStreamToFile("C:\\Users\\Documents\\backTitle.png"); } }
下载方法简单,不用多说了吧,经测试通过,哈哈~~高兴
今天先提供这些哈,还需要研究一下多线程上传,改天一块提供多线程上传和其他方法。
若有问题,还请留言,若有不对的地方,还请大侠指正
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-29 19:08:28