Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файловый диалог, Файловый диалог в Custom control 
V
    Опции темы
MSr00t
Дата 13.7.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.6.2007

Репутация: нет
Всего: нет



Есть кастом контрол, в котором объявляется метод, который задает  URL картинки для таблицы:

Код

public string AscImageUrl
{
       get { return ascImageUrl;}
       set { ascImageUrl = value;}
}



Как сделать так, чтобы при установке свойства появлялась кнопочка, при нажатии на которую выскакивал файловый диалог, как при нажатии, скажем, на BackImageUrl? Очень надо! Заранее спасибо! 
PM MAIL   Вверх
Wanderer2019
Дата 13.7.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



для этих целей существует стандартный контрол ASPX - FileUpload
или HTML вариант - <input type="file"/>

тебе навернео ASPX вариант проще использовать будет
PM ICQ MSN   Вверх
MSr00t
Дата 13.7.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.6.2007

Репутация: нет
Всего: нет



Я новичек в ASP.NET. Может я чего и недопонял, но мне нужно не совсем это. Я создал custom control у которого есть куча изменяемых параметров. Среди них есть параметр "file name" - это путь к XML-файлу с данными. Мне необходимо, чтобы пользователь не вручную вводил URL файла, а имел возможность выбрать его в открывшемся диалоге.  К примеру в стандартном контроле "image" есть свойство "imageUrl".
PM MAIL   Вверх
Wanderer2019
Дата 13.7.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



нутк размещаешь на форме, там где ты будешь заставлять юзера выбирать этот XML, FileUpload компонент... после выбора какого либо файла путь к нему содержится в свойстве FileName этого контрола...
PM ICQ MSN   Вверх
Mymik
Дата 13.7.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Wanderer2019, проблема в том, что security всех известных и используемых браузеров запрещает принимать и устанавливать путь к файлам с помощью JS или приходить с сервера.
Потому для TopicStart'ера есть единственный выход: два элемента
Код

<input type="file" id="userfile" />
<input type="text" id="myFile" />

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


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 13.7.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



Цитата(Mymik @  13.7.2007,  18:44 Найти цитируемый пост)
Wanderer2019, проблема в том, что security всех известных и используемых браузеров запрещает принимать и устанавливать путь к файлам с помощью JS или приходить с сервера.


нука не понял.. расскажи ка по подробней??? может я чего то не понимаю, но у меня есть проект и там для подгрузки файлов с клиента используется именно FileUpload.... все вроде бы нормально работает... 
в чем там проблема то?
PM ICQ MSN   Вверх
Mymik
Дата 14.7.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



у меня есть 
Код

<asp:FileUpload ID="fuTest" runat="server" />

Могу ли я ему как-то назначить значение по умолчанию ??? ну типа чтобы там сразу было написано C:\temp.txt ???  На сколько мне известно этого сделать нельзя по установленным правилам безопастности браузеров, дабы умные люди не крали файлы с пользовательского компьютера. (т.е. прописать для этого инпута display:none и записать туда адрес файла что тебе нужен.)
Ну и та же ситуация и для 
Код

<input type="file" it="tuTest" runat="server" />


А теперь подойдем с клиентской стороны, т.е. там мы можем использовать JS. Допустим фунцию
Код

function setFileName(fileUploadID)
{
    document.getElementById(fileUploadID).value = 'c:\temp.txt';
}

Данная функция не вызовет никаких изменений в нашем компоненте. Т.е. мы можем получать значение нашего компонента, но не можем его устанавливать.
Код

function getFileName(fileUploadID)
{
    alert(document.getElementById(fileUploadID).value);
}

функция написанная выше приведет к тому, что в MessageBox мы увидим текст который храниться в FileUpload(input type="file") поле.[add]Т.е. это прототип является readonly[/add]

Вывод: из вышесказанного делаем вывод, что установка значения для input обходя пользовательские "кривые" руки невозможно. 

P.S.  для настоящих извращенцев рекомендую ознакомиться с CSS position:absolute;. С помощью этого свойства можно немного усовершенствовать стандартный FileUpload путем установки дополнительного TextBox поверх FileUpload и установки перехвата onchange для FileUpload который будет вписывать значение хранимое в FileUpload в TextBox. Однако для того чтобы отчистить значение этого file тебе нужно использовать кнопку
Код

<input type="reset" />

А как известно всем и вся, эта кнопка уничтожает[add]сбразывает в default значение[/add] все введенные данные в пределах form где она определена.

Это сообщение отредактировал(а) Mymik - 14.7.2007, 11:04


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 14.7.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



Цитата(Mymik @  14.7.2007,  11:01 Найти цитируемый пост)
Могу ли я ему как-то назначить значение по умолчанию ??? ну типа чтобы там сразу было написано C:\temp.txt ???  На сколько мне известно этого сделать нельзя по установленным правилам безопастности браузеров, дабы умные люди не крали файлы с пользовательского компьютера. (т.е. прописать для этого инпута display:none и записать туда адрес файла что тебе нужен.)


а зачем это вообще нужно делать??? этот контрол предоставляет необходимый автору поста диалог и ничего более... для чего туда вносить значение по умолчанию? 
PM ICQ MSN   Вверх
Mymik
Дата 14.7.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(MSr00t @  13.7.2007,  16:02 Найти цитируемый пост)
Мне необходимо, чтобы пользователь не вручную вводил URL файла, а имел возможность выбрать его в открывшемся диалоге.
Wanderer2019, я так понял, что топикстартеру нужно чтобы он нажал на кнопочку вылетел список путей сгенерированных из xml, пользователь клачнул на него, и эти данные перекочевали в FileUpload (по вашим словам), но при этом, чтобы пользователь мог выбирать и свои изображения или я чего-то уже не понимаю...

Цитата(Wanderer2019 @  13.7.2007,  16:41 Найти цитируемый пост)
нутк размещаешь на форме, там где ты будешь заставлять юзера выбирать этот XML, FileUpload компонент... после выбора какого либо файла путь к нему содержится в свойстве FileName этого контрола... 
А тут вы говорите, что после выбора данных из xml, путь содержится в FileName, вообще это не так, потому как в fileUpload.FileName содержит только лишь имя файла, но не содержит логический путь к вайлу на пользовательском компьютере. Но это не столь важно, на много более важный вопрос как вы хотите засунуть данные из xml в FileUpload...



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 14.7.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 1
Всего: 17



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

нуда ладно... думаю на поставленный вопрос он получил таки ответ =)
PM ICQ MSN   Вверх
Idsa
Дата 17.7.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Mymik @  14.7.2007,  11:01 Найти цитируемый пост)
P.S.  для настоящих извращенцев рекомендую ознакомиться с CSS position:absolute;. С помощью этого свойства можно немного усовершенствовать стандартный FileUpload путем установки дополнительного TextBox поверх FileUpload и установки перехвата onchange для FileUpload который будет вписывать значение хранимое в FileUpload в TextBox.

Хм... Я не вижу смысла в таком подходе. Конечно, мы сможем 1. при загрузке отображать путь по умолчанию 2. при выборе нового пути отобразить и его. Однако, насколько я понимаю, проблема остается нерешенной, ведь путь по умолчанию мы никаким образом не сможем записать в FileUpload, а, следовательно, если пользователь не выберет файл (т. е. оставит файл по умолчанию), вопреки ожиданиям, ничего не будет загружено.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Mymik
Дата 18.7.2007, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



в ходе дискуссии с Wanderer2019 мы пришли к обоюдному мнению, что топикстартеру не нужно значение по умолчанию так же как и все остальное. Вообще не плохо было б чтобы и топикстартер принимал участие, а то я так и не понял что ему нужно.


Цитата(Idsa @  17.7.2007,  23:23 Найти цитируемый пост)
1. при загрузке отображать путь по умолчанию

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


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
MSr00t
Дата 18.7.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.6.2007

Репутация: нет
Всего: нет



Всем спасибо за участие, я нашел правильное решение. Мне всего лишь было необходимо, чтобы в закладке "properties" моего контрола в свойстве "FileName" была возможность выбирать URL необходимого файла в диалоге. Вот код:

Код


[Editor(typeof(System.Web.UI.Design.UrlEditor), typeof(System.Drawing.Design.UITypeEditor))]
public string FileName
{
       get { return fileName;}
       set { fileName = value;}
}



Тему можно считать закрытой.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1158 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.