首页 > 其他分享 >django+vue实现文件夹上传

django+vue实现文件夹上传

时间:2023-12-21 17:57:08浏览次数:39  
标签:FILES vue http request django 文件夹

最近学django的文件上下传,网上的文件夹上下传压根没有,找了好几个,报错一大堆,没有一个能用,花里胡哨,可气!!!下面这个方法是我刚刚用过的,分享给大家。

前端vue非常简单,template部分

<input type="file" id="twos" webkitdirectory/>
<el-button type="primary" @click="sumfolder">文件夹提交</el-button>
只需要两个,一个inout选取文件夹,另一个点击按钮,上传文件

js部分代码如下:

async sumfolder() {
//拿到元素节点
let twos=document.getElementById('twos')
//读取dom节点图片
const file = twos.files
//声明一个对象,传递图片用
let obj=new FormData()
//循环将图片读入formdata,并且给个不同的'flies'+i,不然会被覆盖
for(let i=0;i<file.length;i++){
console.log(file[i])
obj.append('flies'+i,file[i])
}

//也可以传递一些其他表单信息 obj.append('admin_id','admin_id')【可选项】
//我这里axios封装了成了this.$http,你们也可以直接替换this.$http成为axios.post({})效果一样
const { data: res } = await this.$http({
url:"http://127.0.0.1:8000/rotate/",
method: "POST",
data:obj,
headers:{'content-type':'application/x-www-form-urlencoded'}

});
以上部分vue就全部完成了

下面是django部分,超级简单

import os
from pathlib import Path
from django.shortcuts import HttpResponse,render

#旋转操作
def rotate(request):
BASE_DIR = Path(__file__).resolve().parent.parent
if request.method == 'POST':
print(request.FILES)
if request.FILES:
for i in request.FILES:
myFile = request.FILES[ i ]
if myFile:
dir = os.path.join(os.path.join(BASE_DIR, 'img\\static'), 'upload') #这里自己配好要保存的路径
destination = open(os.path.join(dir, myFile.name),
'wb+')
for chunk in myFile.chunks():
destination.write(chunk)
destination.close()
return HttpResponse('ok')
完工!!我已经成功了!

参考文章:http://blog.ncmem.com/wordpress/2023/12/21/djangovue%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e5%a4%b9%e4%b8%8a%e4%bc%a0/

欢迎入群一起讨论

 

 

标签:FILES,vue,http,request,django,文件夹
From: https://www.cnblogs.com/songsu/p/17919748.html

相关文章

  • vue3--使用ref获取Dom元素
    vue2中,ref使用:在div元素上绑定了ref属性,并命名为hello,接下来我们直接使用this.$refs.hello的方式就可以获取到该DOM元素了。<template><divid="app"><divref="hello">Vue2,ref获取dom元素</div></div></template><script>......
  • 基于vue3和elementplus实现的自定义table组件
    基于vue3和elementplus实现的自定义table组件,集成查询工具栏分页,可通过配置直接实现基础的列表页基于vue3和elementplus实现的自定义table组件,集成查询工具栏分页,可通过配置直接实现基础的列表页目录结构如下:类型声明:declaretypeDictType={value:string|boolean|n......
  • vue3 + xlsx 实现 excel 导入web页面解析成json数据
    vue3+xlsx实现excel导入web页面并解析成json数据fileIipt动态创建的标签,一定要用户点击事件触发,不然文件选择框的弹出会被拦截,无法弹出。意思就是下面这段关键代码要用一个事件区触发执行,不能主动执行(比如:vue的钩子)import*asXLSXfrom'xlsx'//v:"^0.18.5"letfil......
  • avue select多选 格式化列的内容
    AVUE  formatter用来格式化列内容formatter:(val,value,label)=>{letarr=val.invoiceType.split(',');letstr='';for(letindex=0;index<arr.length;index++){......
  • VUE专栏——1.Vue简介
    一、Vue是什么? 2.谁开发的? 3.Vue的特点      如果有一天数据发生变化呢   5.官网 ......
  • 一文教你Vue3中的useDialog,让你的代码更加优雅!
    在日常开发时,弹窗是一个经常使用的功能,而且重复性极高,你可能会遇到下面这些问题:1、一个页面内多个弹窗,要维护多套弹窗状态,看的眼花缭乱2、弹窗内容比较简单,声明变量+模板语法的方式写起来比较麻烦关于这些问题,我首先想到的是应该弄一个即用即走的Dialog,不用去单独维护它......
  • git 下载指定文件夹的方法
    有时候一个项目非常大,特别像一些课程源码往往只需要下载一个文件夹。下面是用git下载指定目录的办法。这里以 https://gitee.com/dotnetmoyu/SimpleAdmin.git为例,只下载其中的web文件夹。  git命令如下://克隆元数据到本地,但不开始下载gitclone-nhttps://gitee.......
  • vue 移动端触屏事件
    事件列表v-tap:tap点击事件v-swipe:swipe滑动事件v-swipeleft:swipeleft左滑事件v-swiperight:swiperight右滑事件v-swipedown:swipedown下滑v-swipeup:swipeup上滑v-longtap:longtap长按代码/***vue上点击事件处理类*/classVueTouch{/***@paramel*@paramb......
  • 【Django】加密 settings.py文件中的数据库密码
    1.使用fromcryptography.fernetimportFernet第三方库pip3installcryptography2.Fernet的使用fromcryptography.fernetimportFernet#生成加密密钥key=Fernet.generate_key()#创建Fernet对象fernet=Fernet(key)#要加密的原始数据message=b"Hell......
  • vue上传图片到指定文件夹
    vue代码<template><divclass="app-container"> <divclass="wenben"><el-upload:disabled="dis==0?true:false"class="upload-demo":action="uploadUrl":on-......