Можно ли сохранить загруженные файлы в ~ / Content?(ASP.NET MVC2) - PullRequest
0 голосов
/ 26 мая 2011

Я пытался сохранить входящие загруженные изображения в ~ / Content на моем компьютере для разработки во время отладки / тестирования, но файлы туда не передаются. Позволяет ли папка сохранять / передавать в нее изображения, или мне нужно сохранить их в ~ / App_Data?


РЕДАКТИРОВАТЬ: код, который я использую:

public ActionResult(AdminGameEditModel formData)
{
    Game game = new Game();

    AutoMapper.Mapper.Map<AdminGameEditModel, Game>(formData, game);

    if (formData.BoxArt.ContentLength > 0 && formData.IndexImage.ContentLength > 0)
    {
        var BoxArtName = Path.GetFileName(formData.BoxArt.FileName);
        var BoxArtPath = Path.Combine(Server.MapPath("~/Content/Images/BoxArt"), BoxArtName);
        game.BoxArtPath = BoxArtPath;
        formData.BoxArt.SaveAs(BoxArtPath);

        var IndexImageName = Path.GetFileName(formData.IndexImage.FileName);
        var IndexImagePath = Path.Combine(Server.MapPath("~/Content/Images/GameIndexImages"), IndexImageName);
        game.IndexImagePath = IndexImagePath;
        formData.IndexImage.SaveAs(IndexImagePath);
    }

    // rest of controller method
}

Оба файла являются HttpPostedFileBase объектами. Сервер, который я сейчас использую, - это сервер ASP.NET, который работает во время отладки VS.

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Вы можете копировать / сохранять изображения и файлы в любом месте на вашем диске.
Вам нужно только проверить, имеет ли процесс IIS доступ к папке.
Я склонен создавать собственную папку, куда я помещаю свои загруженные файлы.

1 голос
/ 26 мая 2011

Вы должны быть в состоянии сохранить загруженные файлы в любой каталог, который вы выберете.Уловка заключается в том, что учетная запись службы, под которой работает ASP.NET, имеет разрешения на запись в эту папку.Для IIS 7 или более поздней версии это, скорее всего, учетная запись сетевой службы на сервере.Чтобы быть уверенным, посмотрите на пул приложений, под которым работает ваш сайт в IIS, и проверьте идентификацию, под которой он работает.


Обновление:

Я вижу.Вы можете попробовать это, чтобы увидеть, есть ли проблема с методом SaveAs этого типа (я помню, что у некоторых людей были проблемы с ним).

Вместо:

formData.BoxArt.SaveAs(BoxArtPath);

try:

using (var output = new FileStream(BoxArtPath, FileMode.CreateNew)) {
  var data = new byte[formData.BoxArt.ContentLength];
  formData.BoxArt.InputStream.Read(data, 0, data.Length);
  output.Write(data, 0, data.Length);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...