Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка под ASP.NET > Файловый диалог |
Автор: MSr00t 13.7.2007, 14:59 | ||
Есть кастом контрол, в котором объявляется метод, который задает URL картинки для таблицы:
Как сделать так, чтобы при установке свойства появлялась кнопочка, при нажатии на которую выскакивал файловый диалог, как при нажатии, скажем, на BackImageUrl? Очень надо! Заранее спасибо! |
Автор: Wanderer2019 13.7.2007, 15:12 |
для этих целей существует стандартный контрол ASPX - FileUpload или HTML вариант - <input type="file"/> тебе навернео ASPX вариант проще использовать будет |
Автор: MSr00t 13.7.2007, 16:02 |
Я новичек в ASP.NET. Может я чего и недопонял, но мне нужно не совсем это. Я создал custom control у которого есть куча изменяемых параметров. Среди них есть параметр "file name" - это путь к XML-файлу с данными. Мне необходимо, чтобы пользователь не вручную вводил URL файла, а имел возможность выбрать его в открывшемся диалоге. К примеру в стандартном контроле "image" есть свойство "imageUrl". |
Автор: Wanderer2019 13.7.2007, 16:41 |
нутк размещаешь на форме, там где ты будешь заставлять юзера выбирать этот XML, FileUpload компонент... после выбора какого либо файла путь к нему содержится в свойстве FileName этого контрола... |
Автор: Mymik 13.7.2007, 18:44 | ||
Wanderer2019, проблема в том, что security всех известных и используемых браузеров запрещает принимать и устанавливать путь к файлам с помощью JS или приходить с сервера. Потому для TopicStart'ера есть единственный выход: два элемента
Первый контрол использовать для загрузки пользовательских файлов, а второй использовать для загрузки данных с его же сервера. Вообще луче всего предусмотреть еще какой-нибудь radiobutton для того чтобы переключаться между этими вариантами. |
Автор: Mymik 14.7.2007, 11:01 | ||||||||||
у меня есть
Могу ли я ему как-то назначить значение по умолчанию ??? ну типа чтобы там сразу было написано C:\temp.txt ??? На сколько мне известно этого сделать нельзя по установленным правилам безопастности браузеров, дабы умные люди не крали файлы с пользовательского компьютера. (т.е. прописать для этого инпута display:none и записать туда адрес файла что тебе нужен.) Ну и та же ситуация и для
А теперь подойдем с клиентской стороны, т.е. там мы можем использовать JS. Допустим фунцию
Данная функция не вызовет никаких изменений в нашем компоненте. Т.е. мы можем получать значение нашего компонента, но не можем его устанавливать.
функция написанная выше приведет к тому, что в MessageBox мы увидим текст который храниться в FileUpload(input type="file") поле.[add]Т.е. это прототип является readonly[/add] Вывод: из вышесказанного делаем вывод, что установка значения для input обходя пользовательские "кривые" руки невозможно. P.S. для настоящих извращенцев рекомендую ознакомиться с CSS position:absolute;. С помощью этого свойства можно немного усовершенствовать стандартный FileUpload путем установки дополнительного TextBox поверх FileUpload и установки перехвата onchange для FileUpload который будет вписывать значение хранимое в FileUpload в TextBox. Однако для того чтобы отчистить значение этого file тебе нужно использовать кнопку
А как известно всем и вся, эта кнопка уничтожает[add]сбразывает в default значение[/add] все введенные данные в пределах form где она определена. |
Автор: Wanderer2019 14.7.2007, 12:20 | ||
а зачем это вообще нужно делать??? этот контрол предоставляет необходимый автору поста диалог и ничего более... для чего туда вносить значение по умолчанию? |
Автор: Mymik 14.7.2007, 13:47 | ||||
|
Автор: Wanderer2019 14.7.2007, 17:34 |
все же мне кажется, что афтар просто спросил как ему организовать диалог выбора файла с клиента, чтобы не вводить путь к файлу руками... нуда ладно... думаю на поставленный вопрос он получил таки ответ =) |
Автор: Idsa 17.7.2007, 23:23 | ||
Хм... Я не вижу смысла в таком подходе. Конечно, мы сможем 1. при загрузке отображать путь по умолчанию 2. при выборе нового пути отобразить и его. Однако, насколько я понимаю, проблема остается нерешенной, ведь путь по умолчанию мы никаким образом не сможем записать в FileUpload, а, следовательно, если пользователь не выберет файл (т. е. оставит файл по умолчанию), вопреки ожиданиям, ничего не будет загружено. |
Автор: Mymik 18.7.2007, 08:29 |
в ходе дискуссии с Wanderer2019 мы пришли к обоюдному мнению, что топикстартеру не нужно значение по умолчанию так же как и все остальное. Вообще не плохо было б чтобы и топикстартер принимал участие, а то я так и не понял что ему нужно. FileUpload никто и не видет и не должен видеть. Да и не форум хакеров тут чтобы рассказывать как воровать файлы с компьютера пользователей. Данный способ просто позволит в одной форме выбирать данные из интернета и данные с пользовательского компьютера. С одной стороны когда он выбирает с помощью FileUpload (мы должны оставить такую функциональность) то мы выбранный файл (а точнее адрес к нему) копируем в TextBox с помощью JS. Если же он хочет вводить данные руками, то пускай это делает руками адрес в интернете. Согласен что это довольно стремный способ по той причине, что пользователь может захотеть ввести адрес руками в FileUpload,- в этом случаи как обмануть систему пока что варианта у меня нет. Можно поискать в инете если это нужно будет. Но пока топикстартер молчит мне это не хочется делать. |
Автор: MSr00t 18.7.2007, 13:10 | ||
Всем спасибо за участие, я нашел правильное решение. Мне всего лишь было необходимо, чтобы в закладке "properties" моего контрола в свойстве "FileName" была возможность выбирать URL необходимого файла в диалоге. Вот код:
Тему можно считать закрытой. |