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

OSCHINA-MIRROR/mzxc_admin-gomyck-fastdfs-spring-boot-starter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Спасибо за JetBrains IDEA!

Начало использования

Текущая версия MASTER — 2.0.1-SNAPSHOT

Если вы используете версию SNAPSHOT, пожалуйста, отметьте опцию develop-fastdfs.

I. Конфигурация среды

1. В файле pom добавьте зависимость:

<dependency>
    <groupId>com.gomyck</groupId>
    <artifactId>gomyck-fastdfs-spring-boot-starter</artifactId>
    <version>2.0.1-RELEASE</version>
</dependency>

2. Отредактируйте файл yml (ниже приведена полная конфигурация):

# Ограничение размера одного файла при загрузке
spring:
  servlet:
    multipart:
      max-file-size: 5000MB
# Конфигурация клиента fastdfs
fdfs:
  connect-timeout: 1601
  thumb-image:
    width: 150
    height: 150
  pool:
    jmx-name-prefix: 1
    jmx-name-base: 1
    max-wait-millis: 102
  tracker-list: 
    - 192.168.1.1:22122 # Адрес службы fastdfs
  so-timeout: 1501
pool:
  max-total: 153

gomyck:
  config:
    redis: true # Использовать ли redis для хранения информации о загрузке файлов и блокировки загрузки
  redis:
    host: 127.0.0.1 
    password: xxxxx
    port: 6379
  fastdfs: # Конфигурация загрузки в fastdfs
    chunk-size: 5 # Размер блока, размер блока загружаемого файла, единица измерения: МБ
    download-chunk-size: 100  # Размер блока загрузки, единица измерения: байт
    group-id: group1 # Группа fastdfs, файлы будут сохранены в этой группе
    file-server-protocol: http # Протокол подключения к удалённому файловому сервису
    file-server-url: 192.168.1.196 # Адрес подключения к удаленному файловому серверу

3. В таблице сопоставления статических ресурсов добавьте следующую конфигурацию (необязательно, если ваш проект содержит WebMvcConfigurationSupport подкласс, вам необходимо добавить конфигурацию статических ресурсов, иначе ресурсы этого проекта не будут доступны):

Обратите внимание, что если в вашем проекте есть класс WebMvcConfigurationSupport, то необходимо добавить конфигурацию статических ресурсов. В противном случае запросы к ресурсам этого проекта будут недоступны.

@Configuration
public class Config extends WebMvcConfigurationSupport {

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("ck-fastdfs/**").addResourceLocations("classpath:/META-INF/resources/ck-fastdfs/");
        registry.addResourceHandler("ck-util/**").addResourceLocations("classpath:/META-INF/resources/ck-util/");
        registry.addResourceHandler("ck-3pty/**").addResourceLocations("classpath:/META-INF/resources/ck-3pty/");
        super.addResourceHandlers(registry);
    }
}

4. Запустите службу и перейдите на страницу примера: host{:port}/{contextPath}/ck-fastdfs/view/ckFastDFS.html (можно отобразить успешную конфигурацию).

II. Документация по разработке

Этот проект не входит в область документации бэкэнда, опытные разработчики могут самостоятельно читать и изменять его. Здесь только приводятся комментарии к использованию JS во внешнем интерфейсе.

1. На странице, где требуется разработать функцию загрузки файлов (ваша бизнес-страница), импортируйте js:

{schema://}host{:port}{/contextPath}/ck-3pty/jquery/jquery-core.min.js
{schema://}host{:port}{/contextPath}/ck-fastdfs/js/webuploader.nolog.js
{schema://}host{:port}{/contextPath}/ck-fastdfs/js/ckFastDFS.js

2. Документация по разработке:

1. Создайте экземпляр внешнего интерфейса для загрузки:
const option = {
    //config something.....
};
const cfd = new CkFastDFS(option);

Каждый экземпляр может связывать несколько кнопок загрузки, поддерживает id селекторы, селекторы классов и другие типы селекторов, поддерживаемые jq плагинами.

Существует несколько экземпляров для разных сценариев: несколько групп файлов для загрузки, когда разные кнопки загружают файлы в разные группы, возможно, потребуется несколько экземпляров страницы для обработки.

2. Описание параметров опции:
{ 
    baseURI: "../../",  //URI сервера (включая контекст) (не обязательно)
    fastDFSGroup: "group1",  //Имя группы для загрузки файлов в fastdfs (не обязательно)
    uploaderConfig: {},  //Конфигурация webUploader (не обязательно)
    uploadButton: {   //Конфигурация кнопки (обязательно)
        buttonId: "#btn1", //Селектор (обязательно), поддерживает все типы селекторов jq плагина
        multiple: true  //Разрешить ли множественный выбор файлов (необязательно, по умолчанию false)
    },
    uploadProgressBar: {  //Индикатор выполнения (необязательно)
        changeBar: function (refer, file, progressVal) {  //При изменении прогресса во время загрузки файла будет вызван этот метод 
            console.log("Индикатор выполнения изменился: " + refer + "|||" + file.id + "|||" + progressVal);
        }
    },
    uploadListener: {  //Слушатель загрузки (необязательно)  
        
        // Описание параметров: 
        // refer: объект jq нажатой кнопки загрузки
        // file: загруженный файл
        // result: результат возврата от сервера
        // reason: тип ошибки, обычно строка: server
        
        //Добавить информацию о файле
        appendFileInfo: function (refer, file) {
            console.log("Выбор файла: " + refer + "|||" + file.id);
        },
        //Перед добавлением файла в очередь
        beforeAppendFileInQueued: function (refer, file) {
            console.log("Добавление в очередь перед: " + refer + "|||" + file.id);
            return true;
        },
        //Начать загрузку
        beginUpload: function (refer, file) {
            console.log("Начало загрузки: " + refer + "|||" + file.id);
        },
        //Успешная загрузка блока
        chunkUploadSuccess: function (refer, file, result) {
            console.log("Успешная загрузка фрагмента:" + refer + "|||" + file.id + "|||" + JSON.stringify(result))
        },
        //Ошибка загрузки
        uploadError: function (refer, file, reason) {
            console.log("Ошибка загрузки: " + refer + "|||" + file.id + "|||" + reason);
        },
``` **3. Описание функций экземпляра:**

cfd.addButton(selector); // Добавить кнопку в экземпляр. cfd.pauseUpload(param); // Приостановить загрузку. Если параметр имеет значение true, то приостанавливается загрузка текущего файла; если это тип файла, то приостанавливается его загрузка; если null или undefined, то приостанавливаются все загрузки. cfd.cancleUpload(file); // Отменить загрузку указанного файла.

**4. Другие инструкции:**
1. Как добавить экземпляр клиента fastdfs в свой проект:
    Используйте @Autowired для внедрения следующих экземпляров интерфейса:
    * TrackerClient — интерфейс TrackerServer;
    * GenerateStorageClient — общий интерфейс хранения файлов (интерфейс StorageServer);
    * FastFileStorageClient — простой интерфейс для удобства разработки и интеграции проекта (интерфейс StorageServer);
    * AppendFileStorageClient — поддерживает операцию добавления файла (интерфейс StorageServer).
2. Как расширить интерфейс js:
    См. класс CkFastDFS.js.
    См. API веб-загрузчика на официальном сайте.
    Конечно, вы также можете разветвить код основной ветки master, упаковать его и предоставить другим пользователям (удалите родительский элемент в pom-файле и укажите версию зависимости вручную, иначе могут возникнуть проблемы с несоответствием версий).

**1.0.2-Release версия реализации:**
> 1. Разбиение на блоки при загрузке (сервер разбивает файл на блоки и записывает их клиенту, нет необходимости загружать весь файл в память сервера перед записью).
> 2. Проверка целостности данных до и после возобновления загрузки (проверка соответствия размера блоков предыдущей и текущей загрузок, иначе изменение размера блока может вызвать проблемы при загрузке файла).

**1.1.3-Release версия реализации:**
> 1. Некоторые методы были скорректированы, и некоторые списки теперь можно запрашивать постранично.
> 2. Изменён способ хранения файлов в redis.
> 3. Добавлена страница ошибки, см. исходный код для использования.
> 4. Исправлена небольшая ошибка, которая могла привести к неправильному освобождению соединения redis.
> 5. Добавлены эскизы изображений, см. код для использования, эскизы создаются автоматически после загрузки изображения.
> 6. Добавлено время истечения срока действия файла, по умолчанию срок не истекает, см. конфигурацию кода JavaScript (пример).
> 7. Оптимизирована упаковка и загрузка.
> 8. Новая версия, новая жизнь.

**Следующая версия реализации:**
> 1. Защита от кражи при скачивании файлов на основе доступа к текущему сервису.
> 2. Получение токена fastdfs (прямой доступ к файловому сервису).
> ...

## Предоставление научных каналов поиска информации для более удобного поиска (небольшой диапазон, более стабильный и надёжный https://blog.gomyck.com/about/).

Комментарии ( 0 )

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

Введение

Идеальная интеграция fastDFS-клиента файлового сервиса, поддержка частичной загрузки, многопоточной загрузки по частям, быстрой передачи файлов, стабильных компонентов интерфейса и серверной части (интерфейс H5), поддержка параллельной загрузки и проверки файлов несколькими пользователями (блокировка файлов), возможность быстрой интеграции файло... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mzxc_admin-gomyck-fastdfs-spring-boot-starter.git
git@api.gitlife.ru:oschina-mirror/mzxc_admin-gomyck-fastdfs-spring-boot-starter.git
oschina-mirror
mzxc_admin-gomyck-fastdfs-spring-boot-starter
mzxc_admin-gomyck-fastdfs-spring-boot-starter
master