Bu sorunun arka planı geliştirdiğim sanal dosya sistemine dayanmaktadır. Kullandığım kavram, farklı dosya türleri için yerel dosya sistemi, dropbox ve amazon s3 için virutal yol sağlayıcılarıdır. Sanal bir dosya için My taban sınıfı şöyle görünür:Bir sanal yol sağlayıcısı ve Amazon S3 SDK kullanarak dosya yükleme
public abstract class CommonVirtualFile : VirtualFile {
public virtual string Url {
get { throw new NotImplementedException(); }
}
public virtual string LocalPath {
get { throw new NotImplementedException(); }
}
public override Stream Open() {
throw new NotImplementedException();
}
public virtual Stream Open(FileMode fileMode) {
throw new NotImplementedException();
}
protected CommonVirtualFile(string virtualPath) : base(virtualPath) { }
}
ikinci Açık yöntemin uygulanması benim sorum tüm hakkında ne olduğunu. yerel dosya sistemi için benim uygulanması bakarsanız diskteki bir dosyaya kaydedip yani o şuna benzer: Ben yerel dosya sistemindeki bir dosyayı kaydetmek isterseniz
public override Stream Open(FileMode fileMode) {
return new FileStream("The_Path_To_The_File_On_Disk"), fileMode);
}
bu şuna benzer olacaktır:
const string virtualPath = "/assets/newFile.txt";
var file = HostingEnvironment.VirtualPathProvider.GetFile(virtualPath) as CommonVirtualFile;
if (file == null) {
var virtualDir = VirtualPathUtility.GetDirectory(virtualPath);
var directory = HostingEnvironment.VirtualPathProvider.GetDirectory(virtualDir) as CommonVirtualDirectory;
file = directory.CreateFile(VirtualPathUtility.GetFileName(virtualPath));
}
byte[] fileContent;
using (var fileStream = new FileStream(@"c:\temp\fileToCopy.txt", FileMode.Open, FileAccess.Read)) {
fileContent = new byte[fileStream.Length];
fileStream.Read(fileContent, 0, fileContent.Length);
}
// write the content to the local file system
using (Stream stream = file.Open(FileMode.Create)) {
stream.Write(fileContent, 0, fileContent.Length);
}
istediğim şey olmalıdır amazon s3 sdk kullanarak bu çözmek ve nasıl nasıl, benim amazon s3 sanal yol sağlayıcıya geçiş ben bu kod yüzden şeyleri özetlemek için herhangi bir değişiklik olmadan doğrudan çalışmak istiyorum olmasıdır amazon s3 sanal yol sağlayıcımda Open (FileMode fileMode) yöntemimi uyguluyorum?
[SDK] 'yı kullanmalısınız (http://aws.amazon.com/sdkfornet/). –
@AaronMcIver Üzgünüm, sorum bulanıktı .. Daha fazla bilgi ekledim – Marcus
Yapmam gerekecek şey, çeşitli bulut depolama sağlayıcısı SDK uygulamalarını barındıran bir arabirim/fabrika tasarımı yapmaktır. Patentlerinin herhangi birini ihlal etmediğinizi kontrol edin, örneğin [David Ebbo'nun Microsoft Patentleri] (http://www.google.com/patents/US20060206452) - ne yapmaya çalıştığınız oldukça güzel bir teknoloji geliştirme gibi geliyor! İyi şanslar!! –