Спасибо за JetBrains IDEA!
Если вы используете версию SNAPSHOT, пожалуйста, отметьте опцию develop-fastdfs.
<dependency>
<groupId>com.gomyck</groupId>
<artifactId>gomyck-fastdfs-spring-boot-starter</artifactId>
<version>2.0.1-RELEASE</version>
</dependency>
# Ограничение размера одного файла при загрузке
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 # Адрес подключения к удаленному файловому серверу
@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);
}
}
Этот проект не входит в область документации бэкэнда, опытные разработчики могут самостоятельно читать и изменять его. Здесь только приводятся комментарии к использованию 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
const option = {
//config something.....
};
const cfd = new CkFastDFS(option);
Каждый экземпляр может связывать несколько кнопок загрузки, поддерживает id селекторы, селекторы классов и другие типы селекторов, поддерживаемые jq плагинами.
Существует несколько экземпляров для разных сценариев: несколько групп файлов для загрузки, когда разные кнопки загружают файлы в разные группы, возможно, потребуется несколько экземпляров страницы для обработки.
{
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 )