Держите HttpPostedFileWrapper в памяти - PullRequest
0 голосов
/ 30 октября 2018

У меня есть сценарий, в котором мои пользователи должны добавить фотографию на мой сайт. Итак, они используют <input type="file" />, они видят небольшой предварительный просмотр, затем им нужно перейти на следующую страницу, чтобы подтвердить все.

Я не хочу сохранять загруженную фотографию, пока они не отправят форму подтверждения на странице подтверждения. Это не та же страница, что и вход для загрузки файла.

HTML + Бритва

<div class="control-group">
    @Html.LabelFor(m => m.SmallLogo, new { @class = "control-label" })
    <div class="controls">
        @Html.TextBoxFor(m => m.SmallLogo, new { type = "file" })
    </div>
</div>

Модель

namespace Models.Registration
{
    [Serializable]
    public class Theme
    {
        [NonSerialized]
        private HttpPostedFileBase _SmallLogo;

        [DisplayName("Small Logo: ")]
        public HttpPostedFileBase SmallLogo
        {
            get { return _SmallLogo; }
            set { _SmallLogo = value; }
        }
    }
}

Я не уверен, что мне нужно отправлять сообщения с моего контроллера, но в основном я обновляю модель, когда страница (форма) отправляется через HTTP POST. Сначала при использовании отладки я мог навести модель, и они показывались бы как HttpPostedFileWrapper. Затем я изменил тип поля модели на HttpPostedFileBase, но после этого я получил сообщение об отсутствии достоверности.

Итак, я последовал за некоторыми другими публикациями о создании личного поля, которое можно сериализировать, а затем просто получил и установил это значение. Теперь, когда я приостанавливаю программу после отправки формы, модал просто показывает ноль. Это так хромает.

Если я оставил информацию о том, что вы должны мне помочь, тогда, пожалуйста, спросите, и я достану ее для вас! Помоги мне, чтобы помочь вам, чтобы помочь мне! : D

1 Ответ

0 голосов
/ 30 октября 2018

HTTP не имеет состояния.

Таким образом, если запрос 1 загружает файл, и вы хотите запрос 2 сохранить файл - это будет сложно.

Вместо этого вы должны сделать запрос 1 сохранить файл в папку 1 (папка 'temp'). Затем запрос 2 может переместить файл из местоположения 1 в местоположение 2 («окончательное» местоположение). Затем периодически удаляйте элементы из местоположения 1, которые являются старыми (например, последний раз обновлялся месяц назад)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...