|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
День добрый, Господа, нужна ваша помощь. Ситуация для наглядности есть страница профайл пользователя с 2мя полями: Имя и User Pic. Пользователь добавил имя и картинку. - Здесь проблем нет. Пользователь хочет заменить имя. - Здесь проблема. Пользователю нужно все снова выбирать картинку. Причина <input asp-for = "UserPic" type = "file" /> - как бы не получает данные из модели, в модели данные 100% есть. Уверен потому что <img src = "UserPic.ToImage()" /> - отображает картинку получается что, чтоб поменять имя, нужно обязательно выбрать картинку снова. Помогите пожалуйста, а то сам что-то не соображу ни как. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 10:01 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
не выбрал картинку, пришло null и не обновляем поле в бд .все ж просто ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 12:29 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G получается что, чтоб поменять имя, нужно обязательно выбрать картинку снова. Да, так и получается. Файлы из модели данных не возвращаются, только обычные поля. Артем G Помогите пожалуйста, а то сам что-то не соображу ни как. Классическим методом отправки формы сохранить выбранный файл не возможно в принципе. Чтобы форма сохраняла своё состояние, нужно отправлять форму через AJAX. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 12:38 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
handmadeFromRu не выбрал картинку, пришло null и не обновляем поле в бд .все ж просто Предположу что вы не поняли то, что я имел ввиду. В контроллере 2 экшена: Create (все хорошо), Update (проблема) 1ый Update - считывает и отображает данные во вью. Сама модель данные (IFormFile) содержит. А <input asp-for = "UserPic" type = "file" /> пустой. НУЖНО чтобы input заполнялся при считывании. Я понимаю что это нужно сделать с помощью jquery. Продпологаю что данные мои где то все равно есть, типа в httpcontext.request.form.files Надеюсь что кто нибудь сможет помочь накидать черновой script. 2ой Update - сохраняет данные. Сейчас приходиться заново выбирать картинку с помощью <input asp-for = "UserPic" type = "file" /> иначе уходит null. Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:29 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
hVostt Артем G получается что, чтоб поменять имя, нужно обязательно выбрать картинку снова. Да, так и получается. Файлы из модели данных не возвращаются, только обычные поля. Артем G Помогите пожалуйста, а то сам что-то не соображу ни как. Классическим методом отправки формы сохранить выбранный файл не возможно в принципе. Чтобы форма сохраняла своё состояние, нужно отправлять форму через AJAX. Все отлично работает. Не заполняется input только в момент считывания. Тут скорее всего нужен jquery добавить данные в input. <img src="@Model.FormFile.ToImage()" /> - отображает картинку <input asp-for="UserPic" type="file" - вероятно пустой, при нажатии save уходит null, приходиться картинку выбирать снова, тогда все ОК. Вот мой пример. Я упрастил код в контроллере и во вью чтоб поднять читаемость. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:45 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G, ..если речь идет об аватаре, т.е. изображении небольшого размера, то можно конвертить его в base64 и гонять туда-сюда, как строку .. костыль, конечно, но может сработать ... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:59 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G <img src="@Model.FormFile.ToImage()" /> - отображает картинку а вы понимаете что тут происходит? почему "отображает картинку"? когда вы разберётесь, то поймёте, что это плохой вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 17:39 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
carrotik Артем G, ..если речь идет об аватаре, т.е. изображении небольшого размера, то можно конвертить его в base64 и гонять туда-сюда, как строку .. костыль, конечно, но может сработать ... изначально так и хотел. там идиотская история с браузерами при выборе картинки. тестировал изначально на IE и Chrome. В одном указывается полный путь до файла, в другом только имя с расширением, по этой причине не получалось конвертировать в byte[]. + эта муть требуется не только для картинок, но и для вообще любых файлов, pdf, ms office, zip. Проект подошел к концу, единственное что осталось вот эта ерунда. За 2 месяца так и не смог найти решения. А потрачено просто тьма времени. Написал здесь только потому что уже выбился из сил. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 17:44 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
hVostt Артем G <img src="@Model.FormFile.ToImage()" /> - отображает картинку а вы понимаете что тут происходит? почему "отображает картинку"? когда вы разберётесь, то поймёте, что это плохой вариант. это не продакшен решение. я показываю что модель заполнена. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 17:45 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G Проект подошел к концу, единственное что осталось вот эта ерунда. За 2 месяца так и не смог найти решения. А потрачено просто тьма времени. Написал здесь только потому что уже выбился из сил. Вы сценарий опишите, как это должно работать. Непонятно до сих пор чего вы хотите, почему из модели пытаетесь файл на генерируемую страницу HTML засунуть, вообще непонятно чего делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 18:50 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
hVostt Артем G Проект подошел к концу, единственное что осталось вот эта ерунда. За 2 месяца так и не смог найти решения. А потрачено просто тьма времени. Написал здесь только потому что уже выбился из сил. Вы сценарий опишите, как это должно работать. Непонятно до сих пор чего вы хотите, почему из модели пытаетесь файл на генерируемую страницу HTML засунуть, вообще непонятно чего делаете. В базе фамилия человека и фото. Пользователь иногда хочет поменять фамилию, а иногда фото. Есть проблема с фото. Когда открываю страницу для редактирования в поле <input asp-for = "UserPic" type = "file" /> данные null ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:25 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Если гуглить, то все примеры IFormFile на Create, на Update примеров 0! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:32 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G, Ну так ваша проблема просто сводится к некоторому непониманию как работает веб и стандартные компоненты браузера. Такой компонент, как <input type="file" /> невозможно заполнить со стороны сервера, так как его задача -- UPLOAD, но не DOWNLOAD или EDIT. Вам тут не поможет ни ASP.NET ни любой другой фреймворк. Вот типичная упрощённая форма для загрузки/смены фото: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Обратите внимание на тег <img> в него подставляется ссылка на файл. На самом деле никакого такого файла нет. На запрос "/profile/my-face.jpg" ваш сервер отдаёт текущее фото пользователя из его профиля. А если фото не загружено, отдаёт заглушку в виде специального изображения "NO PHOTO". Ну и тут тысячи вариаций как это реализовать, примеров много. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:34 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
ок, что делать если надо изменить Фамилию, а фото оставить? поле <input type="file" /> = null прописывать логику что если <input type="file" /> = null то фото не меняй? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:45 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G ок, что делать если надо изменить Фамилию, а фото оставить? поле <input type="file" /> = null прописывать логику что если <input type="file" /> = null то фото не меняй? да то что я и писал выше где вы указали что я не понимаю либ мутить отдельную форму загрузки и на эдите не позволять грузить фото вариантов уйма ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 22:21 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
Артем G ок, что делать если надо изменить Фамилию, а фото оставить? поле <input type="file" /> = null прописывать логику что если <input type="file" /> = null то фото не меняй? Bingo! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 06:44 |
|
IFormFile - как засунуть назад в <input type="file" />
|
|||
---|---|---|---|
#18+
handmadeFromRu Артем G ок, что делать если надо изменить Фамилию, а фото оставить? поле <input type="file" /> = null прописывать логику что если <input type="file" /> = null то фото не меняй? да то что я и писал выше где вы указали что я не понимаю либ мутить отдельную форму загрузки и на эдите не позволять грузить фото вариантов уйма ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 09:18 |
|
|
start [/forum/topic.php?fid=18&msg=39952939&tid=1354719]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 130ms |
0 / 0 |