1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dianbaer-anyupload

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 22:03 218de72

anyupload — это чистый плагин для загрузки файлов, который можно легко интегрировать в любой проект. Он поддерживает множественную загрузку файлов, динамическое управление скоростью загрузки, мониторинг реальной скорости загрузки (кб/с), поблочное создание MD5, поблочную загрузку и проверку MD5 после загрузки, паузу, отмену и другие функции.

Адрес для тестирования: https://www.dianbaer.com/AnyUploadClient/

Описание проекта: anyupload состоит из двух частей: AnyUploadClient и AnyUploadServer. AnyUploadClient содержит 1000 строк кода и включает в себя следующие компоненты:

  • js — библиотека JavaScript, которая содержит:
    • anyupload — папка с файлами плагина anyupload;
    • css — файлы стилей anyupload;
    • dist — упакованная версия anyupload JavaScript;
    • images — изображения для anyupload;
    • src — исходная версия JavaScript anyupload до упаковки;
      • FileConfig.js — файл конфигурации.
    • lib — зависимые библиотеки JavaScript:
      • jquery.min.js;
      • juggle-all.js или juggle-help.js, juggle-event.js, juggle-juggler.js, juggle-http.js, juggle-mv.js.
  • index.html — пример запуска проекта.

AnyUploadServer содержит 899 строк кода и состоит из следующих компонентов:

  • src — серверный код;
  • protobuf — инструмент для генерации сообщений.

Для использования AnyUploadClient выполните следующие шаги:

  1. Добавьте необходимые скрипты и стили в HTML-файл:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <!--juggle库 all in one-->
    <!--
    <script src="js/lib/juggle-all.js" type="text/javascript"></script>
    -->
    <!--juggle库 small require-->
    <script src="js/lib/juggle-help.js" type="text/javascript"></script>
    <script src="js/lib/juggle-event.js" type="text/javascript"></script>
    <script src="js/lib/juggle-juggler.js" type="text/javascript"></script>
    <script src="js/lib/juggle-http.js" type="text/javascript"></script>
    <script src="js/lib/juggle-mv.js" type="text/javascript"></script>
    <!--разделение на блоки и генерация MD5-->
    <script src="js/lib/spark-md5.js" type="text/javascript"></script>
    <script src="js/lib/jquery.min.js" type="text/javascript"></script>
    <link href='js/anyupload/css/anyupload.css' rel='stylesheet' type='text/css'/>
    <!--anyupload библиотека-->
    <script src="js/anyupload/dist/anyupload.js" type="text/javascript"></script>
</head>
  1. Создайте функцию uploadFileButtonChange для обработки события изменения выбранного файла:
var fileMediator;
/**
 * Реакция на выбор файла
 * @param e
 */
var uploadFileButtonChange = function (e) {
    if (!("FileReader" in window) || !("File" in window)) {
        alert("Ваш браузер не поддерживает HTML5, пожалуйста, используйте Google, Firefox, IE10 и т. д.");
        return;
    }
    var files = e.target.files;
    //вызов функции загрузки anyupload
    fileMediator.upLoadFile(files);
    //очистка содержимого кнопки загрузки
    $("#uploadFileButton").val("");
};
  1. Инициализируйте anyupload при загрузке страницы:
window.onload = function () {
    /****инициализация anyupload начинается*****/
    fileMediator = new anyupload.FileMediator();
    //указание объекта контейнера anyupload
    fileMediator.initView($("#anyUploadContainer"));
    //установка адреса загрузки anyupload
    anyupload.uploadFileProxy.url = "http://localhost:8080/AnyUploadServer/s";
    /****инициализация anyupload заканчивается*****/
    $("#uploadFileButton").on("change", uploadFileButtonChange);
};
  1. Вставьте кнопку загрузки файла и контейнер anyupload на страницу:
<!--кнопка загрузки файла-->
<input type="file" class="myFile_PJY" multiple="multiple" id="uploadFileButton"
       style="margin-left: 50px;margin-top: 20px"/>
<!--контейнер anyupload-->
<div id="anyUploadContainer" style="width: 800px;margin-top: 50px;"></div>

Чтобы упаковать исходный код AnyUploadClient, выполните следующие действия:

  1. Перейдите в папку AnyUploadClient/js/anyupload: cd AnyUploadClient/js/anyupload
  2. Установите grunt-cli: npm install -g grunt-cli
  3. Установите зависимости: npm install
  4. Соберите проект: grunt ХопКод = 1; файлБэйзМд5 = 2;//мд5 юзерФайлоНэйм = 3;//имя файла юзерФолдПэрэнтАйДи = 4;//идентификатор родительской папки файла инт64 файлБэйзТоталСайз = 5;//общий размер файла юзерФайлАйДи = 6;//идентификатор файла }

message МД5ЧекС{ строка хопКод = 1; инт32 результат = 2;//результат: 1 — мгновенная передача, 2 — можно передать инт64 файлБэйзПоз = 3;//начальная позиция инт32 апУоадлиМаксЛенгхт = 4;//максимальная длина одной передачи юзерфайлАйди = 5;//идентификатор файла }

message АпУоадФайлСи{ строка хопКод = 1; юзерфайлАйди = 2;//идентификатор файла инт64 файлбэйзПоз = 3;//начальная позиция инт32 апУоадлиЛенгхт = 4;//длина передачи }

message АпУоадфайлЭс{ строка хопКод = 1; инт32 результат = 2;//результат: 1 — мгновенная передача, 2 — можно передать, 3 — передача завершена инт64 файлбэйзПоз = 3;//начальная позиция инт32 апУоадлиМаксленгхт = 4;//максимальная длина одной передачи юзерфайлАйди = 5;//идентификатор файла инт32 вэйттайм = 6;//время ожидания }

AnyUploadServer упаковка

ant

java сервер на основе grain

Зависимости от следующих библиотек, всего (1429 строк, стоимость обучения крайне низкая) grain-httpserver.jar (1318 строк) grain-log.jar (111 строк) github: https://github.com/dianbaer/grain кодовая облачная платформа: https://gitee.com/dianbaer/grain

js клиент на основе juggle

Зависимость от самых простых библиотек, всего (614 строк, стоимость обучения крайне низкая): juggle-help.js (33 строки) juggle-event.js (256 строк) juggle-http.js (99 строк) juggle-mv.js (104 строки) juggle-juggler.js (122 строки) github: https://github.com/dianbaer/juggle кодовая облачная платформа: https://gitee.com/dianbaer/basic

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dianbaer-anyupload.git
git@api.gitlife.ru:oschina-mirror/dianbaer-anyupload.git
oschina-mirror
dianbaer-anyupload
dianbaer-anyupload
master