Сохраните файл в папку на веб-сайте со средним уровнем доверия в ASP.NET
На своем веб-сайте я сохраняю изображения в папку (Фото) в коде позади, вызывая
ImageUploadControl.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/Photos/" + Name + ext));
который выдает ошибку 'Access not allowed'
в среднем доверии. Есть ли альтернатива для сохранения изображений со средним доверием? Эта папка должна быть общедоступной, так как клиенты получают доступ к этим изображениям без какой-либо аутентификации, поэтому я не могу сохранить ее в App_Data(одно решение этой проблемы)
* Сайт размещен на общем плане hostgator. Существует ограничение на то, сколько я могу попросить конфигурации сервера.
РЕДАКТИРОВАТЬ:
Да, это проблема доступа, так как разрешение виртуальных путей не разрешено. Я надеюсь, что у кого-нибудь есть решение этой проблемы.
2 ответа
Учитывая, что вы используете собственный элемент управления.NET, я думаю, что это больше связано с разрешениями файловой системы, чем с доверием среды. Если бы вы использовали сторонний контроль, я бы сказал, что это проблема доверия.
Беглый взгляд на Hostgator, они используют cPanel, оттуда есть раздел файлового менеджера, и здесь, если вы идете и выбираете 'Photos'
папку и выберите "Изменить разрешения", здесь убедитесь, что папка имеет доступ для записи из приложения.
редактировать
Статья поддержки для установки *nix-разрешений: https://support.hostgator.com/articles/cpanel/how-to-change-permissions-chmod-of-a-file
Хорошо, так как это проблема пути:
https://support.hostgator.com/articles/hosting-guide/lets-get-started/server-path-absolute-path
Это работает ASP.NET на * NIX Box? Или это работает на Windows Server и IIS?
Кроме того, я думаю, что вам может понадобиться пересмотреть свой код в этом случае:
string pathRoot = HttpContext.Current.Server.MapPath("~/Photos/");
ImageUploadControl.PostedFile.SaveAs(pathRoot + "/" + Name + ext);
Похоже, ваш оригинальный код пытается использовать mapPath
с включенным несуществующим путем файла.
Это может работать, если вы должны иметь одну строку:
ImageUploadControl.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/Photos/") + Name + ext);