Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在AmazonS3中创建文件夹_C#_Amazon S3_Amazon - Fatal编程技术网

C# 如何在AmazonS3中创建文件夹

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

下面是我将文档上传到S3的代码,它可以正常工作,但是您能帮助我如何在bucket中创建一个不存在的文件夹并将文件上传到该文件夹中吗

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不理解文件夹的概念;相反,它只有很长的文件名,可以包含斜杠。这是一个平面文件系统。