AWS S3 API实现文件上传下载

近日项目需要使用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

AWS S3 API实现文件上传下载的相关文章

文件上传下载—servlet API实现

servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servl

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

文件上传下载

1.文件上传 文件上传下载本质是通过Socket的字节流来传输数据的.所以,对于文件上传,我们可以从HttpRequest对象获取输入流,进而获取上传文件的内容.但是采用ServletAPI并不能获取获取对应文件的字节流,而是获取整个Socket的字节流,里面包括提交的参数.上传文件内容以及其他附加信息. Servlet API上传文件,代码如下 protected void doPost(HttpServletRequest request, HttpServletResponse respo

开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载

OkHttpPlus介绍 项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus 主要功能:OkHttp封装,支持GET.POST.UI线程回调.JSON格式解析.链式调用.小文件上传下载及进度监听等功能 为什么要写这么一个库呢? 首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习. 其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作V

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

javaEE(10)_文件上传下载

一.文件上传概述 1.实现web开发中的文件上传功能,需完成如下二步操作: •在web页面中添加上传输入项•在servlet中读取上传文件的数据,并保存到本地硬盘中. 2.如何在web页面中添加上传输入项?    <input type=“file”>标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意:•必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据.•必须把form的enctype属值设为multipart/form-data.设置该值后,浏览

文件上传表单 上传文件的细节 文件上传下载和数据库结合

1 文件上传表单   1)上传文件的本质是文本复制的过程   2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写   3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如:     IE6:upfile=c:\aa\bb\a.JPG     非IE6: upfile=a.JPG   4)可以将form以MIME协议的方式将上传文件传递到服务端,服务端以二进制流的方式读写     代码:客户端form enctype="multipart/form-data&quo

c# 批量大文件上传下载

以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"

使用Paramiko实现SSH登陆,文件上传下载

1,SSh登陆命令行实现: #!/usr/bin/env python # encoding: utf-8 import paramiko private_key_path = '/Users/aolens/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Aut