Как записать файлы на сервер с минимальным доступом с помощью MVC - PullRequest
0 голосов
/ 23 августа 2011

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

Код контроллера:

var fileFile = Request.Files["p" + prop.Id];
if (fileFile == null) continue;

string pathFile = AppDomain.CurrentDomain.BaseDirectory + "UploadedFiles";
string filenameFile = Path.GetFileName(fileFile.FileName);

if (filenameFile != null) fileFile.SaveAs(Path.Combine(pathFile, filenameFile));

(если это можно реализовать, поместив файл в кэш)

РЕДАКТИРОВАННЫЙ КОД:

var normalPropertyValue = new Catalog.Core.Entities.OrdinaryPropertyValue ();

Environment.CurrentDirectory = Environment.GetEnvironmentVariable ("TEMP");

var fileFile = Request.Files ["File" + prop.Id]; if (fileFile == null) продолжить;

string pathFile = Environment.CurrentDirectory;

fileFile.SaveAs (PathFile);

normalPropertyValue.Value = pathFile;

instance.SetPropertyValue (prop.Id, normalPropertyValue);

1 Ответ

1 голос
/ 18 ноября 2011

Вы могли бы использовать общее расположение данных приложения (это было бы лучше, чем% TEMP%, если вам нужно, чтобы они оставались без присмотра - у меня есть тенденция время от времени чистить папку% TEMP%, по моему опыту) - все пользователи должны иметь доступ к этому, и тогда вы можете просто поместить его в подпапку, например:

var appDataFolder = System.Environment.GetFolderPath(SpecialFolder.CommonApplicationData);
var dir = Path.Combine(Path.Combine(appDataFolder, "My Application"), "UploadedFiles"):

// save your files into dir

Вот все «специальные папки» на тот случай, если вы захотите использовать одну из них: Environment.SpecialFolder

...