2013-07-24 20 views
5

Proje bir MVC 4 C# tabanlı web uygulamasıdır.C# dosyaları yerel sunucu yerine klasöre kaydet

Şu anda yerel olarak çalışıyorum ve yerel olarak çalışan uygulamalara hata ayıklama modunda bir dosya yükleme ve dosyanın yerel klasörüm yerine web sunucusuna kaydedilmesini istiyorum.

Şu anda kullandığınız:

if (!System.IO.File.Exists(Server.MapPath(PicturePath))) 
{ 
    file.SaveAs(Server.MapPath(PicturePath)); 
} 

doğrudan bir web sunucusuna kaydetmek için bu kodu kaldıraç nasıl. Bu mümkün mü?

Şu anda dosya yerel yoluma kaydediliyor ve yol veritabanında saklanıyor, daha sonra dosyaları web sunucusuna manuel olarak yüklememiz gerekiyor.

+0

Uygulamanızı neden web sunucusuna dağıtmıyorsunuz? – Icarus

+0

Sadece açık olmak gerekirse, uygulamanızı yerel olarak çalıştırmak, ancak resmi web sunucunuza kaydetmek ister misiniz? Neden görüntüleri sadece web sunucunuzdaki paylaşımlı bir klasöre kaydetmiyorsunuz? –

+0

Yerel ortamımda hata ayıklama yapıyorum ve uygulamayı dağıtmadan önce tüm hataların giderilmesini sağlıyorum. –

cevap

6

SaveAs fonksiyonu bir dosya adı alır ve aşağıdaki koşulların sağlanması sağlayarak, bunu vermek herhangi yoluna dosya kazandıracak:

  • Sen dosyayolu erişebilirsiniz yerel makine
  • Yerel hesap vardır dosya yoluna yazmak için doğru ayrıcalıklar

Kodunuzu çalıştırırken kontrol edilebilen bir web.config ayarınız olmasını öneririm. Ardından, Server.MapPath ya da bunun yerine mutlak bir yol kullanıp kullanmayacağınıza karar verebilirsiniz.

Örneğin, "debug" daha aşağıdaki ayarları olabilir (yerel olarak çalıştıran):

<appSettings> 
    <add key="RunningLocal" value="true" /> 
    <add key="ServerFilePath" value="\\\\MyServer\\SomePath\\" /> 
</appSettings> 

ve "canlı" modunda:

<appSettings> 
    <add key="RunningLocal" value="false" /> 
    <add key="ServerFilePath" value="NOT USED" /> 
</appSettings> 

Sonra kod şey görünebilir Bunun gibi:

bool runningLocal = GetFromConfig(); 
bool serverFilePath = GetFromConfig(); 
string filePath; 

if(runningLocal) 
    filePath = serverFilePath; 
else 
    filePath = Server.MapPath(PicturePath); 

if (!System.IO.File.Exists(filePath)) 
{ 
    file.SaveAs(filePath); 
} 
+0

Yerel dosyamdan web sunucusuna doğrudan dosya yolunu kullanırsam, yereldeki hesabımın bu dizine yazma erişimi olduğu sürece onu doğrudan bu konuma kaydedebilmem gerekir. –

+0

@RobCarroll: Doğru. Yerel olarak IIS kullanarak çalıştırıyorsanız, tüm yardımlarınız için – musefan

+0

erişimine sahip olması gereken IIS içinde kullanılan kullanıcı hesabı olacak, tam olarak aradığım şey buydu. –

İlgili konular