2017-12-15 4 views
0

Ich verwende AWSSDK.S3 mit .net C# versuchen, eine Datei in einen vorhandenen Ordner auf S3AWSSDK.S3 TransferUtility.Upload Dateien am Ende immer in root

oTransferUtility.Upload("C:\\junk\\fae123.png", strBucket, "Media\\Cache\\f\\fae123.png"); 

danach lade ich einen S3FileInfo bekommen für die Datei

var oS3FileInfo = new S3FileInfo(oAmazonS3Client, strBucket, "Media\\Cache\\f\\fae123.png"); 

wenn ich überprüfen sie die Exists Eigenschaft es falsch ist, wenn ich den Eimer inpect finde ich die Datei im Stamm statt im Ordner.

Ich weiß, dass ich den Dateipfad korrekt (aka Schlüssel) konstruiere, weil ich vorhandene Dateien bereits im Ordner finden kann. z.B.

var oS3FileInfo = new S3FileInfo(oAmazonS3Client, strBucket, "Media\\Cache\\f\\abc546.png"); 

Wenn ich die Exists Eigenschaft überprüfen, ist es wahr.

Hat jemand dieses Problem gesehen?


Ich habe versucht, auch die folgenden ohne Erfolg, sondern auch all Uploads in root-Dumps

TransferUtilityUploadRequest oTransferUtilityUploadRequest = new TransferUtilityUploadRequest(); 

oTransferUtilityUploadRequest.FilePath = "C:\\junk\\fae123.png"; 
oTransferUtilityUploadRequest.Key = "Media\\Cache\\f\\fae123.png"; 
oTransferUtilityUploadRequest.BucketName = existingBucketName; 

oTransferUtility.Upload(oTransferUtilityUploadRequest); 

Antwort

0

Dies ist ein Fehler in AWS, aber ich die Lösung gefunden zu haben.

Explizit die S3-Ordner erstellen, wenn

fehlt
S3DirectoryInfo oDirectory = new S3DirectoryInfo(oAmazonS3Client, strBucket, "Media\\Cache\\f\\"); 
if (!oDirectory.Exists) 
    oDirectory.Create(); 

Öffnen eine S3-Datei aus dem S3-Verzeichnis-Objekt, es spielt keine Rolle, ob die Datei existiert noch nicht, wird sie erstellt werden, wenn Sie es schreiben .

3FileInfo oS3FileInfo = oDirectory.GetFile("fae123.png"); 
using (System.IO.Stream stmTargetFileS3 = oS3FileInfo.OpenWrite()) 
{ 
    using (System.IO.Stream stmLocalFile = System.IO.File.OpenRead("C:\\junk\\fae123.png")) 
     stmLocalFile.CopyTo(stmTargetFileS3); 
} 

Dies funktioniert und die aktualisiert korrekt auf überschriebene Dateien.