2013-05-30 12 views
12

Chciałbym zapisać przesłany plik na ścieżce fizycznej za pomocą metody HttpPostedFileBase.SaveAs().Zapisywanie przesłanego pliku za pomocą HttpPostedFileBase.SaveAs w ścieżce fizycznej

Po wybraniu ścieżki fizycznej pojawia się wyjątek wskazujący, że ścieżka musi być wirtualna.

var fileName = Path.GetFileName(fileurl.FileName); 
var path = "C:/Projets" + fileName; 
fileurl.SaveAs(Server.MapPath(path)); 

Jak mogę zmienić kod, aby móc zapisać plik tam, gdzie chcę?

+0

Nie sądzę, że to możliwe. Usługi IIS uruchamiają Twoją aplikację w puli aplikacji, myśląc o niej jako o polu piasku. Masz tylko pozwolenie na dostęp do tego obszaru. – Belogix

+0

@Belogix, ale jak mogę zmienić uprawnienia procesora puli aplikacji, ponieważ zapisuję plik w tym obszarze, nie mam uprawnień do usunięcia go, a nawet utworzenia nowego katalogu lub pliku tam – Lamloumi2

Odpowiedz

18

Urządzenie Server.MapPath działa tylko z lokalizacjami fizycznymi, które są częścią witryny. Jeśli chcesz zapisać plik na zewnątrz można użyć następujących:

var fileName = Path.GetFileName(fileurl.FileName); 
fileurl.SaveAs(Path.Combine(@"c:\projects", fileName)); 

Upewnij się jednak, że konto, na którym pula aplikacji jest wykonywany jest przyznawane uprawnienia do zapisu do tego folderu.

1

Server.MapPath służy do wirtualnej ścieżki. Możesz spróbować użyć Path.GetFullPath (path).

Powiązane problemy