2013-05-30 2 views
12

Я хотел бы сохранить загруженный файл на физический путь методом HttpPostedFileBase.SaveAs().Сохранение загруженного файла с HttpPostedFileBase.SaveAs в физическом пути

Когда я выбираю физический путь, появляется исключение, указывающее, что путь должен быть виртуальным.

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

Как я могу изменить свой код, чтобы иметь возможность сохранять файл каждый раз, когда я хочу?

+0

Не думаю, что это возможно. IIS запускает ваше приложение в пуле приложений, думайте об этом как о песочнице. У вас есть только разрешение на доступ к этой области. – Belogix

+0

@Belogix, но как я могу изменить разрешение процесса пула приложений, потому что я сохраняю файл в этой области, у меня нет прав доступа для его удаления и даже для создания нового каталога или файла файла там – Lamloumi2

ответ

18

Server.MapPath работает только с физическими местоположениями, которые являются частью веб-сайта. Если вы хотите сохранить файл вне, вы можете использовать следующее:

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

Убедитесь, что хотя учетная запись, под которой ваш пул приложений выполняется предоставляется разрешение на запись в эту папку.

1

Server.MapPath предназначен для виртуального пути. Вы можете попробовать использовать Path.GetFullPath (путь).

Смежные вопросы