在vue3项目中使用el-upload实现文件上传

在vue3项目中使用el-upload实现文件上传

template

		<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
			<el-upload
				ref="uploadRef"
				:limit="1"
				accept=".xlsx, .xls"
				:headers="upload.headers"
				:action="upload.url + '?updateSupport=' + upload.updateSupport"
				:disabled="upload.isUploading"
				:on-progress="handleFileUploadProgress"
				:on-success="handleFileSuccess"
				:auto-upload="false"
				drag>
				<el-icon class="el-icon--upload"><upload-filled /></el-icon>
				<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
				<template #tip>
					<div class="el-upload__tip text-center">
						<div class="el-upload__tip"><el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据</div>
						<span>仅允许导入xls、xlsx格式文件。</span>
						<el-link type="primary" :underline="false" style="font-size: 12px; vert

 - List item

ical-align: baseline" @click="importTemplate">下载模板</el-link>
					</div>
				</template>
			</el-upload>
			<template #footer>
				<div class="dialog-footer">
					<el-button type="primary" @click="submitFileForm">确 定</el-button>
					<el-button @click="upload.open = false">取 消</el-button>
				</div>
			</template>
		</el-dialog>

相关属性说明

  • limit:允许上传文件的最大数量
  • accept:接受上传的文件类型
  • headers:设置上传的请求头部
  • action:请求 URL
  • disabled:是否禁用上传
  • on-progress :文件上传时的钩子
  • on-success:文件上传成功时的钩子
  • auto-upload:是否自动上传文件
  • drag:是否启用拖拽上传

参数数据:

/*** 用户导入参数 */
const upload = reactive({
	// 是否显示弹出层(用户导入)
	open: false,
	// 弹出层标题(批量邀约)
	title: "",
	// 是否禁用上传
	isUploading: false,
	// 是否更新已经存在的用户数据
	updateSupport: 0,
	// 设置上传的请求头部
	headers: { Authorization: "Bearer " + getToken() },
	// 上传的地址
	url: import.meta.env.VITE_APP_BASE_API + "/system/user/importData"
});
  • url:后端给的接口
  • headers:用于进行身份验证

method

/** 下载模板操作 */
function importTemplate() {
	proxy.download("system/user/importTemplate", {}, `user_template_${new Date().getTime()}.xlsx`);
}
/**文件上传中处理 */
const handleFileUploadProgress = (event, file, fileList) => {
	upload.isUploading = true;
};
/** 文件上传成功处理 */
const handleFileSuccess = (response, file, fileList) => {
	upload.open = false;
	upload.isUploading = false;
	proxy.$refs["uploadRef"].handleRemove(file);
	proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
	getList();
};
/** 提交上传文件 */
function submitFileForm() {
	proxy.$refs["uploadRef"].submit();
}

handleFileSuccess :该函数是一个处理文件上传成功的回调函数。它关闭上传组件,清除已上传的文件,弹出导入结果提示框,展示导入结果信息,并调用getList函数获取列表数据。

实现效果图

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在3 使用 `el-upload` 组件向 Django 传递一幅图片,你可以按照以下步骤进行: 1. 安装 `axios`: ```bash npm install axios ``` 2. 在组件引入 `el-upload` 和 `axios`: ```vue <template> <el-upload class="upload-demo" action="/api/upload/" :on-success="handleSuccess" :before-upload="beforeUpload" :auto-upload="false"> <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button size="small" type="success" @click="submitUpload">上传到服务器</el-button> </el-upload> </template> <script> import axios from 'axios'; export default { name: 'UploadDemo', methods: { handleSuccess(response, file, fileList) { console.log(response); }, beforeUpload(file) { // 校验文件类型和大小等信息 return true; }, submitUpload() { this.$refs.upload.submit(); }, }, }; </script> ``` 3. 在 `beforeUpload` 方法校验文件类型和大小等信息,如果校验通过则返回 `true`,否则返回 `false`。 4. 在 `handleSuccess` 方法获取上传成功后的响应,可以根据响应的数据来做进一步的处理。 5. 在 `submitUpload` 方法手动触发上传操作。 6. 在 Django 后端实现接收文件的 API,可以使用 Django Rest Framework 的 `FileUploadParser`: ```python from rest_framework.parsers import FileUploadParser from rest_framework.views import APIView from rest_framework.response import Response class FileUploadView(APIView): parser_classes = (FileUploadParser,) def post(self, request, format=None): file_obj = request.data['file'] # 对文件做进一步处理 return Response({'success': True}) ``` 在 `urls.py` 定义接口路由: ```python from django.urls import path from .views import FileUploadView urlpatterns = [ path('api/upload/', FileUploadView.as_view()), ] ``` 7. 在 `el-upload` 组件设置 `action` 属性为上传文件的接口 URL,例如 `/api/upload/`。 8. 最后,在 `handleSuccess` 方法可以根据响应的数据来做进一步的处理,例如显示上传成功的提示信息等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值