Ссылка для загрузки файла очищается при перезагрузке страницы, почему? - PullRequest
0 голосов
/ 11 апреля 2009

Я использую ASP.net (2.0) с VB.NET.

У меня есть форма регистрации пользователя. В этой форме пользователь предоставляет все свои контактные данные и может загрузить изображение с помощью обычного элемента управления загрузкой файлов в ASP.net.

Это моя проблема.
Если что-то идет не так на странице, я выдаю пользователю сообщение об ошибке, в котором говорится, что он пропустил или что пошло не так. Но страница обновляется, когда это происходит. СЕЙЧАС ссылка на изображение, выбранное пользователем, исчезла. ТЕПЕРЬ, когда пользователь исправляет свою ошибку, он думает, что загружает изображение, но никогда не делал этого, потому что, когда страница загружалась, она удаляла ссылку на его изображение в элементе управления загрузкой файла.

Обратите внимание, что пользователю не нужно загружать изображение, поэтому при заполнении поля ошибки не будет.

Кто-нибудь знает, что я должен делать?

Ответы [ 4 ]

4 голосов
/ 11 апреля 2009

Кто-нибудь знает, что я должен делать?

Два обычных подхода:

  1. Добавление проверки формы на стороне клиента (JavaScript), чтобы у большинства людей появлялась ошибка до того, как они отправят форму, а не позже, на стороне сервера к этому времени загрузка будет потеряна.

  2. Дайте каждому экземпляру формы уникальный идентификатор. Если файл загружен в форму с ошибкой, сохраните этот файл на сервере и запишите в базу данных, что форма с этим идентификатором имеет прикрепленный файл. В форме второго шанса включите идентификатор в качестве скрытого поля и визуально укажите, что загруженный файл был запомнен. При отправке перетащите запомненный файл и приложите его с новой отправкой.

3 голосов
/ 11 апреля 2009

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

3 голосов
/ 11 апреля 2009

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

Если что-то пойдет не так во время отправки формы, вы должны сообщить пользователю повторно загрузить его / ее файл. Это правильный способ сделать это. Думайте об этом как о транзакции (все или ничего).

1 голос
/ 11 апреля 2009

Из соображений безопасности никто не может записать значение в поле файла в HTML. Вы можете загрузить файл, затем сообщить об ошибке и дать пользователю возможность отменить загрузку. Редактировать: это то, что Бобинс описывает более подробно в другом ответе.

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