Vue+Django上传文件

Vue部分,使用el-upload组件

<!--action必须要有,但是通过其他按钮触发,不通过submit()触发-->
<!--accept限制上传文件类型-->
<!--file-list绑定文件变量-->
<el-upload
  action=""
  :auto-upload="false"
  accept=".zip"
  :file-list="fileList"
  :on-change="fileChange"
>
  <el-button>选择压缩包</el-button>
</el-upload>
<el-button type="primary" @click="submitUpload">上传后端</el-button>

JS函数部分

submitUpload() {
  // 可以绑定refs通过submit提交
  // this.$refs.uploadPackage.submit()
  var formData = new FormData()
  formData.append('file', this.fileList[0].raw)  // 去文件列表第一个的raw属性!!!重点!!!
  formData.append('otherAttr', '其他属性')
  
  axios.post('http://127.0.0.1:8000/test/upload/', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'   // 选择formData格式传输
    }
  })
},

Django部分

# Django的request对象会自动解析multipart/form-data编码的数据,并将它们填充到
# request.POST(对于非文件字段)
# request.FILES(对于文件字段)
def test(request):
    print('request.POST', request.POST)
    print('request.FILES', request.FILES)

    file = request.FILES.get('file')
    otherAttr = request.POST.get('otherAttr')
    
	# 可以将文件保存在对应路径
	savePath = BASE_DIR + r'\upload'
	fileObj = FileSystemStorage()
	fileObj.save(savePath, file)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值