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

OSCHINA-MIRROR/fuqiangma-minio-upload

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 06:10 5490d97

Фрагментированная загрузка больших файлов

Описание

Данный пример демонстрирует, как можно реализовать фрагментированную загрузку, возобновляемую загрузку и быструю загрузку больших файлов с использованием Vue 3, Element Plus, MinIO и Spring Boot.

Клиентская часть (Vue 3)

// Фрагментированная загрузка
async function chunkedUpload(file, url) {
  const formData = new FormData();
  formData.append('file', file);
  formData.append('chunked', true);

  const response = await axios.post(url, formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });

  return response.data;
}

// Возобновляемая загрузка
async function resumeUpload(file, url) {
  const formData = new FormData();
  formData.append('file', file);
  formData.append('resume', true);

  const response = await axios.post(url, formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });

  return response.data;
}

// Быстрая загрузка
async function fastUpload(file, url) {
  const formData = new FormData();
  formData.append('file', file);
  formData.append('fast', true);

  const response = await axios.post(url, formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });

  return response.data;
}

Серверная часть (Spring Boot)

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
```@RestController
public class FileController {    
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file,
                              @RequestParam(value = "resume", required = false) boolean resume,
                              @RequestParam(value = "fast", required = false) boolean fast) {
        if (resume) {
            // Обработка возобновляемой загрузки
        } else if (fast) {
            // Обработка быстрой загрузки
        } else {
            // Обработка фрагментированной загрузки
        }
        return "Файл загружен успешно";
    }
}
```### Заключение```Данный пример демонстрирует, как можно реализовать фрагментированную загрузку, возобновляемую загрузку и быструю загрузку больших файлов с использованием Vue 3, Element Plus, MinIO и Spring Boot.

#### Введение
Используя Vue 3, Element Plus, MinIO и Spring Boot, реализован пример функциональности для фрагментированной загрузки, возобновляемой загрузки и быстрой загрузки больших файлов.

#### Демонстрация
![Демонстрация](images/demo.gif)

#### Техническая среда
- Java 8
- Node 15 и выше
- MySQL 8
- MinIO

#### Инструкция по установке

##### Бэкенд:
1. Создайте базу данных и импортируйте SQL-скрипт.
![Создание базы данных](images/create-db.png)
2. Измените файл yml, заменив конфигурации MySQL и MinIO на ваши.
![Конфигурация yml](images/yml-config.png)
3. В MinIO создайте бакет, указанный в шаге 2.
4. Запустите Spring Boot.
![Запуск Spring Boot](images/run.png)

##### Фронтенд:
Перейдите в корневую директорию фронтенда.

cd minio-upload-web


```javascript
// Запуск
npm install
npm run dev

Откройте браузер и перейдите по адресу, указанному в консоли. Запуск фронтенда

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

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

1
https://api.gitlife.ru/oschina-mirror/fuqiangma-minio-upload.git
git@api.gitlife.ru:oschina-mirror/fuqiangma-minio-upload.git
oschina-mirror
fuqiangma-minio-upload
fuqiangma-minio-upload
master