国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 + element-plus 的 upload + axios + django 文件上傳并保存

這篇具有很好參考價值的文章主要介紹了vue3 + element-plus 的 upload + axios + django 文件上傳并保存。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

座右銘:怎么簡單怎么來,以實(shí)現(xiàn)功能為主。

element plus + djanggo 文件上傳,Web,django,vue.js,python

歡迎大家關(guān)注公眾號與我交流

?之前在網(wǎng)上搜了好多教程,一直沒有找到合適自己的,要么只有前端部分沒有后端,要么就是寫的不是很明白。所以還得靠自己摸索出來后,來此記錄一下整個過程。

  • 其實(shí)就是不要用默認(rèn)的 action,要手動實(shí)現(xiàn)上傳方式?http-request,然后再傳給后端進(jìn)行各種操作了
    • 這里隱藏了文件展示列表
    • 展示了上傳文件的個數(shù)
    • 文件去重上傳
    • 也對上傳文件的格式做了限制
    • 在點(diǎn)擊創(chuàng)建的時候 progress 會隨著上傳進(jìn)度動態(tài)變化

環(huán)境安裝什么的就不講了,直接上代碼好吧,這個是樣式圖

element plus + djanggo 文件上傳,Web,django,vue.js,pythonelement plus + djanggo 文件上傳,Web,django,vue.js,python

這是vue3代碼

<template>
  <el-upload class="upload-demo form-item" v-model:file-list="fileList" drag multiple :http-request="httpRequest" :show-file-list="false" auto-upload="false" :accept=upload_accept>
      <el-icon class="el-icon--upload"><upload-filled /></el-icon>
      <div class="el-upload__text">拖拽 / 點(diǎn)擊上傳文件 ( zip, jpg, png ……)</div>
      <template #tip>
          <div class="el-upload__tip">已上傳 {{ fileListLength }} 個文件</div>
      </template>
  </el-upload>
  <el-progress :percentage="progress.curr" :color="progress.color" />
  <el-button type="info" class="btn" @click="removeFile">清空文件</el-button>
  <el-button type="primary" class="btn" @click="create">創(chuàng)建</el-button>
</template>

<script setup lang="ts">
import { ref, watch } from "vue";
import http from "@/utils/axios/index";
import { UploadFilled } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';


const public_elmsg_success = (msg: string) => {
  ElMessage({ type: 'success', duration: 1000, showClose: true, message: msg })
};

const public_elmsg_warning = (msg: string) => {
  ElMessage({ type: 'warning', duration: 1000, showClose: true, message: msg })
};

const public_elmsg_error = (msg: string) => {
  ElMessage({ type: 'error', duration: 1000, showClose: true, message: msg })
};

const upload_accept = ref(".JPG,.PNG,.JPEG,.PCD,.MP4,.AVI,.DAT,.DVR,.VCD,.MOV,.SVCD,.VOB,.DVD,.DVTR,.DVR,.BBC,.EVD,.FLV,.RMVB,.WMV,.MKV,.3GP,.ZIP"); // 限制了上傳文件的格式 大寫后綴
const upload_lower = ref(upload_accept.value.split(',').map((item: any) => item.toLowerCase())); // 限制上傳文件的格式 小寫后綴
const fileList: any = ref([]);
const fileList1: any = ref([]);
const fileListLength = ref(0);

const progress = ref({ "curr": 0, "color": "orange" })


watch(fileList1, (newVal, oldVal) => {
  console.log(newVal, oldVal)
  fileListLength.value = newVal.value;
  fileListLength.value = newVal.length;
}, { immediate: true, deep: true });

const httpRequest = (options: any) => {
  let nameList: Array<any> = [];
  fileList1.value.forEach((item: any) => {
      nameList.push(item.name);
  });
  const file_suffix = options.file.name.split(".");
  if (!upload_lower.value.includes(`.${file_suffix[file_suffix.length - 1]}`)) {
      public_elmsg_warning(`文件 ${options.file.name} 格式不正確`);
      return;
  }
  if (nameList.includes(options.file.name)) { }
  else {
      fileList1.value.push(options.file)
  }
  fileList.value = fileList1.value;
}

const removeFile = () => {
  fileList.value = [];
  fileList1.value = [];
  progress.value.curr = 0;
}


const create = () => {
  const formData = new FormData()
  fileList1.value.forEach((file: any) => {
      console.log(file)
      formData.append('files', file)
  })

  http.post("task/create/", formData, {
      headers: { "Content-Type": "multipart/form-data" }, onUploadProgress(progressEvent: any) {
          progress.value.curr = Math.round((progressEvent.loaded * 100) / progressEvent.total)
          if (progress.value.curr == 100) { progress.value.color = 'green' }
          else { progress.value.color = 'orange' }
      },
  }).then((res: any) => {
      if (res.code == 0) {
          public_elmsg_success("任務(wù)創(chuàng)建成功")
      }
      else { public_elmsg_error(res.msg) }
  }
  );
}
</script>

v3版本的 djagno 代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-828983.html

from loguru import logger
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
    def create_task(request):
        files = request.FILES.getlist('files')
        for fit in files:
        logger.info(f"name: {fit.name} size: {round(fit.size/ 1024 / 1024 / 1024, 5)} G")
        # 保存文件
        #  with open(f"{os.sep.join(['.', fit['name']])}", mode="wb") as f:
        #         f.write(fit)

        return JsonResponse({"code": 0, "msg": "success"})

到了這里,關(guān)于vue3 + element-plus 的 upload + axios + django 文件上傳并保存的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3+ts - element-plus封裝上傳文件圖片組件

    vue3+ts - element-plus封裝上傳文件圖片組件

    ??近期做到的項(xiàng)目中有涉及到上傳圖片上傳文件的需求,因?yàn)槭莗c管理后臺,用到了element-plus框架,所以我也一起使用element-plus中的上傳圖片上傳圖片功能,并對它進(jìn)行封裝成一個組件,方便在多個地方使用。 1、上傳文件、視頻 2、上傳圖片 ??在這里上傳圖片和文件是分

    2024年02月12日
    瀏覽(37)
  • 搭建vue3,TypeScript,pinia,scss,element-plus,axios,echarts,vue-router,babylon,eslint,babel,拖拽,rem自適應(yīng)大屏

    搭建vue3,TypeScript,pinia,scss,element-plus,axios,echarts,vue-router,babylon,eslint,babel,拖拽,rem自適應(yīng)大屏

    1.1、使用vite初始化項(xiàng)目 1.1.1、創(chuàng)建項(xiàng)目文件夾 1.1.2、進(jìn)入項(xiàng)目文件夾 1.1.3、初始化項(xiàng)目 1.1.4、輸入項(xiàng)目名稱 1.1.5、選擇vue 1.1.6、選擇TypeScript 1.1.7、查看當(dāng)前源(非必要) 1.1.8、更換為國內(nèi)鏡像(非必要) 1.1.9、進(jìn)入項(xiàng)目 1.1.10、安裝依賴 1.1.11、運(yùn)行項(xiàng)目 1.1.12、修改部分報錯信息

    2024年04月23日
    瀏覽(40)
  • vue3使用element-plus

    vue3使用element-plus

    element-ui 是配合 vue2 使用,element-plus 是配置 vue3 使用的 1. 包管理器的方式 如果是使用?webpack 或者 vite 打包工具新建的項(xiàng)目 2. 瀏覽器直接導(dǎo)入 直接通過瀏覽器的 HTML 標(biāo)簽導(dǎo)入 Element Plus,然后就可以使用全局變量 ElementPlus 1. 導(dǎo)入全部組件且注冊所有的圖標(biāo) 聲明使用 ElementPl

    2024年02月08日
    瀏覽(35)
  • Vue3導(dǎo)入Element-plus方法

    Vue3導(dǎo)入Element-plus方法

    先引入依賴 main.js中要引入兩個依賴 然后 這個東西 我們最好還是掛載vue上 所以 還是 然后 我們可以在組件上試一下用一個ElementUi的表格組件 參考代碼如下 運(yùn)行結(jié)果如下 也是沒有任何問題

    2024年02月06日
    瀏覽(97)
  • vue3 - element-plus 上傳各種 word pdf 文件、圖片視頻并上傳到服務(wù)器功能效果,示例代碼開箱即用。

    vue3 - element-plus 上傳各種 word pdf 文件、圖片視頻并上傳到服務(wù)器功能效果,示例代碼開箱即用。

    在 vue3 項(xiàng)目中,使用 element plus 組件庫的 el-upload 上傳組件,進(jìn)行文件、圖片圖像的上傳功能示例。 可直接復(fù)制,再改個接口地址。 在這里上傳

    2024年02月15日
    瀏覽(53)
  • vue3 element-plus 實(shí)現(xiàn)圖片預(yù)覽

    vue3 element-plus 實(shí)現(xiàn)圖片預(yù)覽

    element-plus下有這么一個組件 el-image-viewer /,但是這個組件是沒寫在文檔上面的,像普通組件一樣使用即可 可以通過點(diǎn)擊按鈕實(shí)現(xiàn)圖片預(yù)覽,而非el-image組件只能通過點(diǎn)擊圖片實(shí)現(xiàn)預(yù)覽 2.1封裝組件 2.3組件使用 在需要使用的地方引入,然后使用即可,這不是重點(diǎn),每個人使用的

    2024年02月15日
    瀏覽(28)
  • Vue3 封裝 element-plus 圖標(biāo)選擇器

    Vue3 封裝 element-plus 圖標(biāo)選擇器

    效果一: 效果二: ? 效果一的這個是把全部的icon圖標(biāo)都讓它顯示出來,讓我們自己選擇說選圖標(biāo) 2.1. 全局注冊 icon 組件 2.2. 組件實(shí)現(xiàn)? 2.3. 使用? 效果二的這個是渲染后端返回的icon圖標(biāo) 3.1. 全局注冊 icon 組件 3.2. 組件實(shí)現(xiàn)? 3.3. 使用?

    2024年02月07日
    瀏覽(240)
  • vue3項(xiàng)目搭建并配置element-plus

    安裝完成后,輸入如下指令查看vue的版本: 選擇一個要存放項(xiàng)目的目錄,打開小黑窗輸入如下命令: 一開始輸入項(xiàng)目名稱或者默認(rèn)vue-project,然后根據(jù)需求選擇Yes/No 生成完項(xiàng)目后,輸入如下指令: src/main.js里引入 index.css的文件位置根據(jù)實(shí)際情況寫,也有可能是 const app后面加

    2024年02月13日
    瀏覽(30)
  • vue3+element-plus 表單輸入框無法輸入

    vue3+element-plus 表單輸入框無法輸入

    Element-Plus在進(jìn)行reactive在對登錄用戶密碼輸入輸入時失效,最后發(fā)現(xiàn)是el-form,在進(jìn)行ref和model進(jìn)行綁定的時候,綁定的屬性名稱都是一致的,導(dǎo)致界面無法輸入,如下圖所示都綁定的是:loginForm,代碼入下圖所示: 此時界面操作輸入框,是無法編輯的: 而el-form修改的model=\\\"logi

    2024年02月11日
    瀏覽(27)
  • 新星計劃打卡學(xué)習(xí):VUE3引入element-plus

    新星計劃打卡學(xué)習(xí):VUE3引入element-plus

    目錄 1、安裝element-plus 2、安裝按需導(dǎo)入插件 3、修改配置文件 4、添加頁面內(nèi)容 5、保存并重啟項(xiàng)目 官網(wǎng)說要想使用element-plus需要先進(jìn)行安裝,并給出了三種安裝方式,我選擇了第三種。 ?報錯了: ?解決的辦法: 原因是沒有安裝pnpm,看此博主文章進(jìn)行解決 https://blog.csdn.n

    2024年02月16日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包