По договоренности
Простым языком: кнопка, визуально подменяющая стандартную кнопку формы на поле <input type="file"> плюс бегущая полоска, показывающая завершенность загрузки.
Загрузчик планируется использовать для больших файлов (до нескольких гигабайт).
Проект несрочный, может выполняться в спокойном темпе параллельно с другими проектами.
Наиболее важные технические аспекты:
1. Тесное взаимодействие Java с Javascript + jQuery.
Функционал Java-части должен быть сведен к минимуму и ограничен только тем, что не может Javascript (например, открыть диалог на выбор файла, взять часть файла, отдать часть файла).
Javascript, в свою очередь, будет разрабатываться, в основном, на стороне заказчика (именно поэтому Java-часть минимализируется: мы её не знаем, а Javascript – знаем).
От вас (исполнителя) фактически и требуется разработать этот необходимый Java-минимум, а для Javascript нужно лишь сделать заготовки необходимых функции для ловли событий – определить им входные/выходные параметры и описать логику работы.
Визуальная часть с Java также снимается по максимуму: она сводится к прозрачному невидимому объекту, который привязывается к кнопке на странице, принимает её размеры и ловит над ней щелчки. Вся стилизация – средствами HTML-разметки (тоже выполняется уже заказчиком).
2. Максимальная прозрачность работы Java-части.
Java-часть должна предоставлять подробную информацию о том, что происходит в ней и (особенно) за ней. Например, в debug-режиме – непосредственно тексты ответов с сервера и др.
3. Нужны всякие стандартные вещи типа загрузки нескольких файлов с очередью, ограничения размера и типа файлов на этапе выбора и др.
4. В разработке также важны два вещи:
- отсутствие лишнего кода (т.е. загрузчик должен быть сделан именно как загрузчик, а не взято что-то, что может быть и загрузчиком – подобная универсальность не нужна)
- экслюзивность кода (т.е. он должен быть лично ваш, чтобы вы полностью понимали, как он работает, и отвечали за него; адаптация чужого решения возможна, но согласуется дополнительно).
Техническое задание – в приложении.
Цена договорная.