2015-05-08 15 views
15

Bir şekilde şirket ağımızda çalışan bir ASP.NET uygulaması aracılığıyla dosya yükleme becerisi geliştirmem gerekiyor. Sorun şu ki dosyalar gittikçe büyüyor. Şu anda çok genel bir zaman uyumsuz yükleme kullanıyoruz ancak sorun, dosyaların giderek daha büyük hale gelmesi ve maxAllowedContentLength arasındaki dosya başına maksimum 3.9gb limiti, uint'un maksimum değeri daha fazla bir şeye izin vermeyeceğidir. Yakında kullanıcıların yüklemeyi düşündüğü dosyalar bu değeri aşacak ve 100 gb'ye kadar çıkabilecektir.Büyük bir dosya yükleme (100gb'ye kadar) ASP.NET uygulamasının yüklenmesi

Bu soruna bir çözüm için çevrimiçi olarak bakmayı denedim, ancak çoğu dosyada büyük dosyalar insanlar için en iyi 1gb anlamına geliyor.

ASP.NET MVC \ WebAPI uygulaması aracılığıyla gerçekten büyük dosyaları (100g'ye kadar) karşıya yüklemenin bir yolu var mı yoksa alternatif çözümler mi aramam gerekiyor?

+0

@Kamo Bu aslında sorun bizim kullanıcıların dosya belli bir formu önceki yükleme doldurmak zorunda olmasıdır B planına edilir Bunlara ek olarak, FTP'nin nasıl kullanılacağını öğretmek çok fazla zaman alacaktır, bu yüzden bunun için özel bir FTP istemcisi yazmak zorundayız. Ancak bunu yapmadan önce mevcut çözümümüzü değiştirmek için tüm olasılıkları araştırmak istiyorum. – user3223738

+0

@ user3223738 Dosyaları FTP üzerinden program aracılığıyla gönderebilir misiniz? –

+0

@ user3223738 Kullanıcılardan, formu doldurduktan sonra dosyalarını paylaşımlı klasöre kopyalamasını isteyebilir misiniz? Paylaşılan klasörün yolu, form dosyalama sonrasında gösterilebilir. – Amitd

cevap

3

Parçalar halinde göndermeyi düşünebilirsiniz. Bu, büyük dosya gereksinimini atlar (her istek yalnızca gönderdiğiniz öbek boyutunda olduğu gibi), ancak istemci ve sunucu tarafında biraz daha karmaşıktır.

Bir websocket üzerinden karşıya yüklenen dosyaları akışa benzer bir şey yaptım, ancak bu çoklu ajax istekleri ile kolayca yapılabilir. Her iki durumda da, istemcinin bilgisayarındaki dosyanın bir bölümünü okumak, bu parçayı gönderebileceğiniz (muhtemelen Base64) bir şeye kodlamak ve bu segmenti web sunucusuna göndermek için JavaScript File API'u kullanmak isteyeceksiniz. Sunucunun dosyayı doğru yazdığından emin olmak için dosya konumu gibi ek veriler de gönderebilirsiniz. Sunucu, nasıl cevap verileceğini (alındığını teyit etmek için “doğru” bir kadar basit olabilir) seçebilir, bundan sonra istemci javascript'i okur ve dosyanın bir sonraki parçasını gönderir.

WebSockets'ı kullanarak bir github repo here (ASP.NET MVC server-side code here) sürümünde bir demo var, ancak birkaç tweaks ile bunu sırayla AJAX isteklerine kolayca yapabilirsiniz.

İlgili konular