第一次知道AWS然后网上就研究了一番,如果也是第一次知道这个的话,或者对这个只知道是干什么,并没有写个相关的程序的话,可以看看这个网址http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/Welcome.html。

  现在开始讲讲我做这个的前后经过了。

  首先呢,先要去官网下载一个SDK,网址http://aws.amazon.com/cn/developers/getting-started/net/。

  下载好之后,就安装了,安装好之后,打开你的VS 新建项目时候就可以看到AWS了。如下图

  

  选择想要新建的项目,建议新手创建Web项目,原因嘛,调试方便,确定后出现如下:

  

  输入你的登录名 ,账号了,密码了等等……然后点击OK。

  新建的项目出来了,有可能新建的项目AWS的引用报警,你只需要重新引入下就行,哪里有呢?就在你刚刚安装SDK 的路径那里面找,有3.5和4.5的,所以你的项目最低版本是3.5.

  引入好,然后生成,不报错,然后F5启动下。

  如果出现下图:

  

  恭喜你,新建项目成功。

  为什么我其他两个都有error呢,那是因为我这个账号,没有其他2个的权限。

  如果你的项目F5出来不是这样,那就看你的报什么错了。(如果我不忙的话,到时候给你看下,你也可以自己研究)

  然后开始做上传。

  新建类Upload.cs

 

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Amazon.S3;
using Amazon.S3.Model;
using System.Configuration;
using System.IO; namespace AwsWebApp
{
public class Upload
{
public static string bucketName = ConfigurationManager.AppSettings["bucketName"];
public static string filePath = ConfigurationManager.AppSettings["filePath"]; public void UploadLogs()
{
//检查是否存在目的目录
if (Directory.Exists(filePath))
{
List<FileInfo> listFiles = GetAllFilesInDirectory(filePath);
string logFilePath = string.Empty;
string Key = string.Empty;
string result = string.Empty;
foreach (FileInfo item in listFiles)
{
logFilePath = item.DirectoryName + "/" + item.Name;
if (item.DirectoryName == filePath)
{
Key = item.Name;
}
else
{
Key = item.DirectoryName.Replace(filePath, "") + "/" + item.Name;
Key = Key.Substring(, Key.Length - ).Replace("\\","/");
Key = Key.Replace("\\", "/");
}
//判断文件是不是存在
if (File.Exists(logFilePath))
{
if (UploadToS3(logFilePath, Key) == "OK")
{
//如果存在则删除
// File.Delete(logFilePath); }
}
}
} }
private List<FileInfo> GetAllFilesInDirectory(string strDirectory)
{
List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息
DirectoryInfo directory = new DirectoryInfo(strDirectory);
DirectoryInfo[] directoryArray = directory.GetDirectories();
FileInfo[] fileInfoArray = directory.GetFiles();
if (fileInfoArray.Length > ) listFiles.AddRange(fileInfoArray);
foreach (DirectoryInfo _directoryInfo in directoryArray)
{
listFiles.AddRange(GetAllFilesInDirectory(_directoryInfo.FullName));//递归遍历
}
return listFiles;
}
//执行上传
private string UploadToS3(string logFilePath, string Key)
{
try
{
IAmazonS3 client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1);
PutObjectRequest request = new PutObjectRequest()
{
BucketName = bucketName,
Key = Key,
FilePath = logFilePath
};
PutObjectResponse response = client.PutObject(request);
return response.HttpStatusCode.ToString();
}
catch (AmazonS3Exception s3Exception)
{
Console.WriteLine(s3Exception.Message, s3Exception.InnerException);
return "";
}
}
}
}

  好了,其他方法调用就行

  看下Web.config的配置

  <add key="bucketName" value="bucketName"/>
  <add key="filePath" value="D:\Log"/>

  多加这2个,其他的还有问题,可以私心我……

  

  

AWS 之 S3篇<.NET(c#)批量上传文件>的更多相关文章

  1. Linux命令之rz - 批量上传文件,简单易用(转载)

    用途说明 rz命令能够批量上传文件,当然也可上传单个文件啦.使用的协议是古老的ZMODEM协议,尽管协议古老,但毫不影响的简单易用的特性.一般情 况我们要上传文件到Linux系统,要么使用ftp(还得 ...

  2. 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder

    请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...

  3. 不带插件 ,自己写js,实现批量上传文件及进度显示

    今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...

  4. Python基于Python实现批量上传文件或目录到不同的Linux服务器

    基于Python实现批量上传文件或目录到不同的Linux服务器   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...

  5. input file multiple 批量上传文件

    这几天维护系统,有一个批量上传文件功能,出现了一点小问题 我的笔记本选择要上传的文件很正常 但在测试环境上,别人的电脑上,选择上传文件之后 一开始,以为是代码问题,网上找了很多的资料,但还是没用,然后 ...

  6. 使用 sendKeys(keysToSend) 批量上传文件

    未经允许,禁止转载!!! 在selenium里面处理文件上传的时候可以使用sendKeys(keysToSend) 上传文件 例如: element.sendKeys(“C:\\test\\uploa ...

  7. TP3.2批量上传文件(图片),解决同名冲突问题

    1.html <form action="{:U('Upload/index')}" enctype="multipart/form-data" meth ...

  8. 用Azure CLI批量上传文件

    在Windows环境下,我们可以使用AzCopy批量上传文件.其效率和传输速率都是非常快的. 在Linux或MacOS环境下,可以使用Azure的CLI实现批量文件的上传. 下面的脚本可以实现此功能. ...

  9. Java Miniui实现批量上传文件demo 201906221520

    可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType= ...

随机推荐

  1. 我今天坑了我们公司的IT程序猿。。。

    今天在在公司邮箱发现了一个很神奇的事情! 同事的邮箱下面有个微博链接的签名. 光这个当然不是神器的,如果只是个图片加链接我也会,关键是他的这个链接和他的微博是实时交互的,他在微博上的状态会在链接里动态 ...

  2. Start my cnBlogs

    Compared to CSDN blog, althought it's my first time to use CNBlog,i felt it makes me more comfortabl ...

  3. C# testJsonAsXMLNodeAttribute - XML& json & Collections - XmlNode, XmlElement, XmlAttribute,Dictionary,List

    testJsonAsXMLNodeAttribute using Newtonsoft.Json; using System; using System.Collections.Generic; us ...

  4. CSS透明属性详解代码

    透明往往能产生不错的网页视觉效果,先奉上兼容主流浏览器的CSS透明代码: 代码如下: .transparent_class { filter:alpha(opacity=50); -moz-opaci ...

  5. Spring+Mybatis+Maven 整合配置

    <?xml version="1.0" encoding="UTF-8"?> <beans default-autowire="by ...

  6. PAT-乙级-1049. 数列的片段和(20)

    1049. 数列的片段和(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定一个正数数列,我们可以从中截 ...

  7. 把eclipse"中文版"变成"英文版"

    在Eclipse.exe当前路径下,直接新建快捷方式,右键属性,添加如下参数即可 eclipse.exe -nl en

  8. linux源码阅读笔记 void 指针

    void 指针的步长为1,而其他类型的指针的步长与其所定义的数据结构有关. example: 1 #include<stdio.h> 2 main() 3 { 4 int a[10]; 5 ...

  9. zju 1037 Gridland(找规律,水题)

    题目链接 多写几个案例,根据数据的奇偶性,就能找到规律了 #include<stdio.h> int main() { int t,n,m; double ans; scanf(" ...

  10. MYSQL存储过程中常使用的命令记录

    MYSQL存储过程中常使用的命令记录 1.触发器trigger 查看:show triggers; 2.存储过程procedure 查看:show procedure status; 查看详细:sho ...