2016-03-23 25 views
0

Belki de sahip olduğum başlık% 100 sorumu yansıtmıyor, ancak daha net hale getirmeye çalışacağım. That is how our system is right now.

Internet'te ve bir Dosya Sunucusu'na erişimi olan Web sunucusunda herkese açık bir Web sunucumuz var. Web sunucusu üzerinde istemcinin Fileserver'dan dosya indirebilmesi için dosyalara sahip olmak istemiyoruz. Bu tür istekler için herhangi bir teknoloji var mı?
ASP kullanıyoruz. NET WebForms.Dahili sunucudan HTTP isteğine dosya aktarımı

Şimdiden teşekkürler.

cevap

0

Bunu yapacak herhangi bir Çerçeve bilmiyorum ama benzer bir şey uyguluyorum. Bizim durumumuzda, kullanıcıların bir veritabanında indirebilmeleri gereken dosyaların bir listesi var, ancak belirli bir klasördeki mevcut dosyaları sorgulamak için System.IO.Directory uygulamasını kullanabilirsiniz. Uygulamanın, dosya paylaşımına erişmesine izin verilen bir kimliği (Kullanıcı) olan bir uygulama havuzunda çalıştırılması da gerekir.

Gerçek karşıdan yükleme, ASP.Net WebHandler (.ashx-File) olarak uygulanır. Kullanıcı Temelde ProcessRequest yönteminde böyle bir şey yapmak Handler olduğunu çarptığında:

string fileName = "\\\\myServer\\folder\\file.pdf"; 
byte[] fileContent = System.IO.File.ReadAllBytes(fileName); 

context.Response.Clear(); 
context.Response.ClearHeaders(); 
context.Response.ClearContent(); 

context.Response.ContentType = "application/pdf"; 

context.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(fileName)); 
context.Response.AddHeader("Content-Length", fileContent.Length.ToString()); 
context.Response.BinaryWrite(fileContent); 

Tabii ki daha büyük dosyalarla ilgileniyor eğer belleğe tüm dosya yüklemek ziyade parçalar halinde okuyamaz isteyebilirsiniz ve BinaryWrite'a birden fazla çağrı yapın. Ayrıca ContentType'ı dosya türünüze uyan bir MIME-Type'a ayarlamanız gerekir, böylece istemciler tarayıcısı tarafından doğru şekilde ele alınır.