Ваш файл введен как required
.
Если вы скроете это с помощью CSS, тогда это все еще будет необходимо, пользователь просто не сможет его увидеть (но Chrome, IIRC, предупредит вас об этом в консоли инструментов разработчика).
Вам нужно удалить атрибут required
, когда вы его скрываете.
, но когда я пытаюсь комментировать файл, кнопка отправки работает
blockquote>Синтаксис вашего комментария не выполняет то, что вы хотите.
Во-первых, у вас есть элемент ввода с недопустимым атрибутом типа:
blockquote><input type=<!--"file" -->
Затем у вас есть остальное как обычный текст , который будет отображаться пользователю, если вы не скрывали это с помощью CSS.
blockquote>name="pictures" accept="image/*" required id="uploadImage"/>
Посмотрите, как это выглядит:
<input type=<!--"file" --> name="pictures" accept="image/*" required id="uploadImage"/>
Похоже чтобы решить вашу непосредственную проблему, потому что элемент
input
больше не имеет атрибутаrequired
(потому что он является частью простого текста.
ClickOnce имеет свои собственные ограничения безопасности (understandbly так). Если Вы хотите полную мощность, и управление Приложения Windows затем идут с .NETприложение updaterкомпонентом . Это работает как очарование и даже использовалось Microsoft внутренне для их основанной на.NET игры (я не помню игровое имя хотя).
ClickOnce является моим предпочтительным методом. Это имеет некоторые бородавки, но это идет с Visual Studio и работами обоснованно хорошо.
ClickOnce в большой степени используется, но можно сделать то, что я сделал для крупного приложения и пробую их:
Я переделал логику немного и создал то, что я думал, был лучший файл обновления XML. Теперь, когда я должен обновить клиенты, я просто отправляю новые EXE-файлы или файлы DLL и устанавливаю правильные версии в общедоступном XML-файле. Мое приложение обнаруживает более новые версии, если это является более старым и обновляет себя. При выполнении этого на Windows Vista необходимо запросить права администратора так, чтобы Программные файлы могли быть записаны в (если Вы устанавливаете там).
Можно также легко преобразовать это в C# с помощью Преобразователя C#/VB.NET.
Существует действительно хорошая утилита под названием Updater. Похоже, что это записано в C или C++. Я смог настроить XML-файлы и загрузить их в рабочий сервер, и затем я могу иметь Выполнение Updater и проверить XML-файл на другую версию и загрузить новый пакет установки обновления, что я создал использование Системы установки Nullsoft Scriptable (NSIS).
Для обновления клиентских приложений .Net посмотрите Обновление AppLife . Это очень гибкий, расширяемый и настраиваемый.
Отказ от ответственности - я связан с обновлением AppLife.
We investigated a handful of options and decided to use AppLife Update. AppLife Update can quickly and easily add auto update functionality for your .NET applications, but it is also flexible because of its comprehensive API.
See the full list of features and some demo videos on their website.
DotNetAutoUpdate
Я реализовал библиотеку для этого под названием DotNetAutoUpdate (исходное название, а?). Его цель:
Рекомендуется создать веб-приложение servlet/asp.net, которое взаимодействует с SQL Server и возвращает только то, что необходимо для приложения J2ME. Поскольку J2ME не имеет JDBC и имеет ограничения памяти для обработки результатов SQL. Надеюсь, это имеет смысл!
-121--1948863-Опция 1 ясна, но несколько многословна. Мне совсем не нравится 2, а 3 трудно понять. Лично я предпочитаю использовать структуры для такого рода вещей.
typedef struct {
unsigned char whatever[2];
unsigned char device_address;
unsigned char register_address;
unsigned char num_bytes;
} CMD;
CMD * pcmd = (CMD *)&cmd[0];
// use the local variables:
if(num_bytes ≤ 0xFF) {
do_stuff(pcmd->device_address, pcmd->register_address, pcmd->num_bytes);
-121--4690580- Позвольте мне начать с того, что мы предлагаем полное решение по обновлению, которое включает в себя:
wyUpdate
Если вы хотите создать собственную программу обновления, вот несколько советов:
Хорошее место для начала - это wyUpdate C # исходный код , упомянутый выше. Его можно каннибализировать и использовать в своих целях. Некоторые из алгоритмов, которые он содержит:
Здесь также имеются спецификации .
Поскольку автоматическое обновление является обязательным требованием, позвольте мне рассказать вам, как это делается с нашим элементом управления AutomaticUpdater .
Мы используем именованные каналы для обмена данными между автономным средством обновления (wyUpdate) и элементом управления Automatic Updater, расположенным в форме вашей программы. wyUpdate сообщает о ходе выполнения в средство автоматического обновления, и средство автоматического обновления может указать wyUpdate, чтобы отменить выполнение, начать загрузку, начать извлечение и т. д.
Это позволяет отделить средство обновления от вашего приложения.
На самом деле, точно названные каналы C # код мы используем включен в статью Я написал немного назад: Multi-process C # приложение, как Google Chrome .
Вот решение с открытым исходным кодом, которое я написал для удовлетворения конкретных потребностей, которые у нас были для приложений WinForms и WPF. Общая идея состоит в том, чтобы иметь наибольшую гибкость при минимально возможных накладных расходах.
Итак, интеграция очень проста, и библиотека делает практически все за вас, включая операции синхронизации. Он также очень гибкий и позволяет вам определять, какие задачи выполнять и на каких условиях — вы устанавливаете правила (или используете уже существующие). Последнее, но не менее важное, это поддержка любого источника обновлений (Интернет, BitTorrent и т. д.) и любого формата канала — все, что не реализовано, вы можете просто написать сами.
Холодные обновления (требующие перезапуска приложения) также поддерживаются и выполняются автоматически, если для задачи не указана «горячая замена».
Это сводится к одной DLL размером менее 70 КБ.
Подробнее на http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
Код на http: //github.com/synhershko/NAppUpdate (Под лицензией Apache 2.0)
Я планирую расширить его, когда у меня будет больше времени, но, честно говоря, вы сможете быстро улучшить его самостоятельно для любых целей на данный момент не поддерживает.