Реализация и оптимизация ручной загрузки файлов Element-UI Upload.
Реализация и оптимизация ручной загрузки файлов Element-UI Upload.

🎉Реализация и оптимизация ручной загрузки файлов Element-UI Upload.

введение

В веб-разработке, Загрузка файла – частый запрос. Element-UI как отличный набор библиотек Vueкомпонентов,Предоставляет множество компонентов загрузки.,в<el-upload>используется для Загрузка компоненты файла. В этой статье основное внимание будет уделено тому, как вручную Загружать использоватьUploadкомпонентыElement-UI. файла и некоторые стратегии оптимизации в практических приложениях.

Часть 1. Базовое использование Element-UI Upload

1.1 Установите Element-UI

первый,Убедитесь, что в вашем проекте установлен Element-UI. Если нет Установить,Вы можете выполнить установку с помощью следующей команды:

Язык кода:javascript
копировать
npm install element-ui

Затем добавьте Element-UI в проект:

Язык кода:javascript
копировать
// main.js
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);
1.2 использовать <el-upload> компоненты

В ваших компонентах Vue,использовать <el-upload> компонентыосознать Загрузка файл. Вот базовый пример:

Язык кода:javascript
копировать
<template>
  <el-upload
    class="upload-demo"
    action="/upload"
    :show-file-list="false"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
  >
    <el-button size="small" type="primary">Нажмите, чтобы загрузить</el-button>
  </el-upload>
</template>

<script>
export default {
  methods: {
    handleSuccess(response, file, fileList) {
      // Загрузка файл Успешный обратный вызов
      console.log(response);
    },
    beforeUpload(file) {
      // Крючок перед загрузкой возвращает false Можно отменить загрузку
      console.log(file);
      return true;
    },
  },
};
</script>

<style scoped>
/* Отрегулируйте стиль в соответствии с реальной ситуацией */
.upload-demo {
  display: inline-block;
}
</style>

В приведенном выше коде,мы проходим<el-upload>компонентывыполнить Понятноодин Нажмите, чтобы загрузитькнопка。существовать Загрузка файлапосле успеха,вызоветhandleSuccessметод;существовать Перед загрузкой,вызоветbeforeUploadметод,В этом методе вы можете выполнить некоторую пользовательскую обработку.

Часть 2. Загрузка файлов вручную

2.1 Запуск загрузки вручную

иногда,Мы хотим нажать кнопку Ручной триггер Загрузка файла,Вместо автоматической загрузки файла после его выбора。Element-UIпредоставилuploadFilesметодосознать Загрузка вручную。

Язык кода:javascript
копировать
<template>
  <el-upload
    ref="upload"
    class="upload-demo"
    action="/upload"
    :show-file-list="false"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
  >
    <el-button size="small" type="primary" @click="manualUpload">Загрузка вручную</el-button>
  </el-upload>
</template>

<script>
export default {
  methods: {
    handleSuccess(response, file, fileList) {
      // Загрузка файл Успешный обратный вызов
      console.log(response);
    },
    beforeUpload(file) {
      // Крючок перед загрузкой возвращает false Можно отменить загрузку
      console.log(file);
      return true;
    },
    manualUpload() {
      // Ручной триггер Загрузка файла
      this.$refs.upload.submit();
    },
  },
};
</script>

Через приведенный выше код,Мы добавили кнопку «Загрузить вручную».,исуществовать Вызывается при нажатии кнопкиmanualUploadметод,Долженметодпройти внутриthis.$refs.upload.submit()Ручной триггер Загрузка файла。

2.2 Обработка файлов при загрузке вручную

В сценарии ручной загрузки,Возможно, мы захотим выполнить некоторую обработку файла перед загрузкой.,Например, сжатие, преобразование формата и т. д. чтобы добиться этого,нас МожетсуществоватьbeforeUploadметодвыполнить соответствующую обработку в。

Язык кода:javascript
копировать
<template>
  <el-upload
    ref="upload"
    class="upload-demo"
    action="/upload"
    :show-file-list="false"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
  >
    <el-button size="small" type="primary" @click="manualUpload">Загрузка вручную</el-button>
  </el-upload>
</template>

<script>
export default {
  methods: {
    handleSuccess(response, file, fileList) {
      // Загрузка файл Успешный обратный вызов
      console.log(response);
    },
    beforeUpload(file) {
      // Крючок перед загрузкой возвращает false Можно отменить загрузку
      console.log(file);

      // Ручная обработка файлов, такая как сжатие, преобразование формата и т. д.

      return true;
    },
    manualUpload() {
      //

 Ручной триггер Загрузка файла
      this.$refs.upload.submit();
    },
  },
};
</script>

существоватьbeforeUploadметодсередина,Вы можете получить файловый объект, который в данный момент будет загружен.file,Здесь осуществляется индивидуальная обработка файлов. После завершения обработки,возвращаться true Указывает разрешение на загрузку, возврат false Указывает на отмену загрузки.

Часть 3. Оптимизация производительности

3.1 Одновременная загрузка

в практическом применении,Вы можете столкнуться с ситуациями, когда вам необходимо загрузить несколько файлов одновременно. Компоненты Upload в Element-UI по умолчанию загружаются один за другим.,с целью повышения эффективности,Может быть осуществлено Одновременная загрузка。

Язык кода:javascript
копировать
<template>
  <el-upload
    ref="upload"
    class="upload-demo"
    action="/upload"
    :show-file-list="false"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
    :http-request="customRequest"
    :on-remove="handleRemove"
  >
    <el-button size="small" type="primary" @click="manualUpload">Загрузка вручную</el-button>
  </el-upload>
</template>

<script>
export default {
  data() {
    return {
      fileList: [], // Используется для хранения списков файлов.
    };
  },
  methods: {
    handleSuccess(response, file, fileList) {
      // Загрузка файл Успешный обратный вызов
      console.log(response);
    },
    beforeUpload(file) {
      // Крючок перед загрузкой возвращает false Можно отменить загрузку
      console.log(file);

      // Ручная обработка файлов, такая как сжатие, преобразование формата и т. д.

      return true;
    },
    customRequest(option) {
      // Пользовательская функция загрузки для Одновременной загрузка
      const formData = new FormData();
      formData.append('file', option.file);
      
      // Здесь можно добавить дополнительные параметры
      // formData.append('name', 'file');

      // Отправить запрос
      this.$axios.post(option.action, formData)
        .then(response => {
          option.onSuccess(response, option.file, this.fileList);
        })
        .catch(error => {
          option.onError(error, option.file, this.fileList);
        });
    },
    handleRemove(file, fileList) {
      // Обратный вызов при удалении файла
      console.log(file, fileList);
    },
    manualUpload() {
      // Ручной триггер Загрузка файла
      this.$refs.upload.submit();
    },
  },
};
</script>

существовать В приведенном выше коде,насиспользовать Понятноhttp-requestАтрибут для указания пользовательской функции загрузкиcustomRequest,С помощью этой функции реализуется одновременная загрузка. в то же время,насиспользоватьfileListдля хранения списка загруженных файлов,Чтобы соответствующая обработка могла быть выполнена при удалении файла.

3.2 Ограничения на загрузку файлов

в некоторых сценах,При Загрузке файла могут потребоваться некоторые ограничения.,Например, размер файла, тип файла и т. д. Компоненты загрузки Element-UI предоставляют соответствующие элементы конфигурации для реализации этих ограничений.

Язык кода:javascript
копировать
<template>
  <el-upload
    ref="upload"
    class="upload-demo"
    action="/upload"
    :show-file-list="false"
    :on-success="handleSuccess"
    :before-upload="beforeUpload"
    :http-request="customRequest"
    :on-remove="handleRemove"
    :file-list="fileList"
    :limit="3" <!-- Ограничить количество загружаемых файлов -->
    :max-size="1024" <!-- Ограничить размер файла в единицах KB -->
    :accept="'image/*'" <!-- Ограничить тип загружаемых файлов -->
  >
    <el-button size="small" type="primary" @click="manualUpload">Загрузка вручную</el-button>
  </el-upload>
</template>

<script>
export default {
  data() {
    return {
      fileList: [], // Используется для хранения списков файлов.
    };
  },
  methods: {
    // ...(Другие методы такие же, как указано выше)
  },
};
</script>

через конфигурациюlimitmax-sizeиacceptхарактеристики,Может Ограничить количество загружаемых файлов、размер и тип. Это может эффективно контролировать файлы, загружаемые пользователями, чтобы соответствовать ожиданиям.

Заключение

Благодаря введению этой статьи,Мы узнали, как реализовать ручную загрузку файлов с помощью Uploadкомпонентов Element-UI.,включать Запуск загрузки вручную и обработка файлов перед загрузкой. В практических приложениях сочетание некоторых стратегий оптимизации производительности может лучше удовлетворить потребности проекта. В то же время разумно устанавливайте ограничения на загрузку, чтобы повысить удобство использования и безопасность системы. Надеюсь, эта статья поможет вам лучше понять использованиеElement-UI для Загрузки. файла。

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose