C# 如何在AmazonS3中创建文件夹
下面是我将文档上传到S3的代码,它可以正常工作,但是您能帮助我如何在bucket中创建一个不存在的文件夹并将文件上传到该文件夹中吗C# 如何在AmazonS3中创建文件夹,c#,amazon-s3,amazon,C#,Amazon S3,Amazon,下面是我将文档上传到S3的代码,它可以正常工作,但是您能帮助我如何在bucket中创建一个不存在的文件夹并将文件上传到该文件夹中吗 try { TransferUtility fileTransferUtility = new TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1)); // Specify advanced set
try
{
TransferUtility fileTransferUtility = new
TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1));
// Specify advanced settings/options.
TransferUtilityUploadRequest fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
BucketName = existingBucketName,
FilePath = filePath,
StorageClass = S3StorageClass.ReducedRedundancy,
PartSize = 9291456, // 6 MB.
Key = keyName,
CannedACL = S3CannedACL.PublicRead
};
fileTransferUtility.UploadDirectory("C:\\Build", existingBucketName);
fileTransferUtilityRequest.Metadata.Add("param1", "Value1");
fileTransferUtilityRequest.Metadata.Add("param2", "Value2");
fileTransferUtility.Upload(fileTransferUtilityRequest);
Console.WriteLine("Upload 4 completed");
}
catch (AmazonS3Exception s3Exception)
{
Console.WriteLine(s3Exception.Message,
s3Exception.InnerException);
}
知道AmazonS3中没有文件夹的概念是很重要的。这些只是带有斜杠的长S3文件名,用于分组 通过发送PUT对象请求,您可以创建一个文件夹。在请求中,您需要在其名称中添加“/”,然后字符串以“/”分隔,文件大小为零 有关更多详细信息:
公用void CreateFolder(字符串awsBucketName,字符串awsFolderName)
{
EncryptionMaterials EncryptionMaterials=新的EncryptionMaterials(RSA.Create());
AmazonS3EncryptionClient=新的AmazonS3EncryptionClient(encryptionMaterials);
if((cloudKaseClient!=null)和(_Security.IsTokenAuthenticate(tokenUsr,tokenPasswd)))
{
PutObjectRequest PutObjectRequest=新建PutObjectRequest
{
BucketName=awsBucketName,
StorageClass=S3StorageClass.Standard,
ServerSideEncryptionMethod=ServerSideEncryptionMethod.AES256,
CannedACL=S3CannedACL.Private,
Key=awsFolderName+“/”,
ContentBody=awsFolderName
};
client.PutObject(putObjectRequest);
}
}
对于AmazonS3的概念,如果您想要区分文件和文件夹,而不是文件夹路径,则使用带“/”的路径获取,对于文件路径,则使用不带“/”的路径获取
另外,如果您想创建带有“/”的文件夹名称,那么amazon s3浏览器也可以创建不带“/”的文件夹
要创建文件,请使用下面的代码
public void CreateFile(string awsBucketName, string awsFolderName)
{
EncryptionMaterials encryptionMaterials = new EncryptionMaterials(RSA.Create());
AmazonS3EncryptionClient client = new AmazonS3EncryptionClient(encryptionMaterials);
if ((cloudKaseClient != null) & (_Security.IsTokenAuthenticate(tokenUsr, tokenPasswd)))
{
PutObjectRequest putObjectRequest = new PutObjectRequest
{
BucketName = awsBucketName,
StorageClass = S3StorageClass.Standard,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256,
CannedACL = S3CannedACL.Private,
Key = awsFolderName,
ContentBody = awsFolderName
};
client.PutObject(putObjectRequest);
}
}
IIRC,S3不理解文件夹的概念;相反,它只有很长的文件名,可以包含斜杠。这是一个平面文件系统。