element-plus中el-upload组件,实现上传、点击下载、删除功能等

文章展示了如何在Vue.js应用中使用element-plus库的el-upload组件,配置包括设置上传路径、限制文件类型和大小、处理删除操作、以及实现文件预览和下载功能。在删除文件前,beforeRemove钩子用于阻止删除操作。uploadSuccess和errorMessage函数分别处理上传成功和失败的回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

element-plus中el-upload组件,实现上传、点击下载、删除功能等

全部代码:

  <el-form-item label="上传模板:" prop="fileId">
          <el-upload
             ref="exampleUploadRef"
            :file-list="fileList"//上传的文件显示列表, 格式如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]
            :action="postUrl"//上传文件的路径
            :limit="1"//设置最大允许上传个数
            list-type="text"//文件列表的类型,默认是text
            accept=".doc,.docx" //接受上传的文件类型
            class="avatar-uploader"
            :before-remove="beforeRemove"//删除文件之前的钩子,若返回 false 或者返回 Promise 且被 reject,则停止删除停止执行handleRemove事件
            :before-upload="beforeUpload"//上传文件之前的钩子,进行判断文件大小和格式是否符合
            :on-remove="handleRemove"   //文件列表移除文件时的钩子
            :name="fileName"//上传的文件字段名
            :data="otherParam"//上传时附带的额外参数(如用户信息、业务标识等)
            :headers="headers"//设置上传的请求头部
            :on-preview="handlePreview"//点击文件列表中已上传的文件时的钩子
            :on-exceed="handleExceed" //定义超出限制时的行为(文件超出个数限制时的钩子)
            :multiple="false"//是否支持多选文件(默认是否)
            :on-success="uploadSuccess"//文件上传成功时的钩子
            :on-error="errorMessage"//文件上传失败时的钩子
            :on-change="handleChange"//文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用    
          >
            <div class="uploadIcon">
              <el-icon>
                <Plus />
              </el-icon>
            </div>
            <template #tip>
              <div class="el-upload__tip text-red">只能上传doc/docx文件</div>
            </template>
          </el-upload>
</el-form-item>
 <script>
 export default {
  setup() {
      const token = store.getters["login_store/token"];
      const data = reactive({
	    fileName: "multipartFiles",//用于指定上传文件的字段名,也就是在后端接收上传文件时需要使用的字段名。在前端发送上传请求时,请求头中会包含该字段名和对应的文件数据,后端就可以通过这个字段名获取到上传的文件数据
	    headers: {
	            Authorization: "Bearer " + token //获取token数据
	             },
	    otherParam: {
		        bucketName: "fastabp",
		        fileType: "personalData",
		        unzip: false
	      },
         fileList:[],
         postUrl :""
      })
     const beforeRemove = (file, uploadFiles) => {
	       if(this.status=='view'){
         ElMessage({
		          message: "不允许删除!",
		          type: "error",
		          offset: 60
		        });
		        return false
		      }else{
		        return true
		      }
     };
       //文件移除操作
   const  handleRemove(file, fileList){
        data.fileList=fileList//或者data.fileList = []; //清空fileList所有数组    
    }, 
        //上传文件失败
    const errorMessage = (response) => {
		      return ElMessage({
		        message: "文件上传失败,请联系管理员",
		        type: "error",
		        offset: 60
		      });
    };
    //上传文件成功
    const uploadSuccess = (response, file, fileList) => {
		      data.fileList.push({//得到的文件数据转换成 name url方式
		        name: file.fileOrigName,
		        url: file.filePreviewUrl
		      });
    };
     //文件超出个数限制时的钩子
    const handleExceed = (files, fileList) => {};
     //点击文件列表中已上传的文件时的钩子,进行下载
    const handlePreview = (file) => {
		      console.log("file", file);
		      var link = document.createElement("a"); //定义一个a标签
		      link.download = file.name; //下载后的文件名称
		      link.href = file.url; //需要生成一个 URL 来实现下载
		      link.click(); //模拟在按钮上实现一次鼠标点击
		      window.URL.revokeObjectURL(link.href);
        };
    const handleChange = (uploadFile, uploadFiles) => {};
    //判断上传之前文件的格式
     const beforeUpload = (file) => {
		      const isLt20M = file.size / 1024 / 1024 < 20;
		      if (!isLt20M) {
		        ElMessage({
		          message: "上传图片大小不能超过 20MB!",
		          type: "error",
		          offset: 60
		        });
		      }
		      var fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
		      const isFile = fileType === "doc" || fileType === "docx";
		
		      if (!isFile) {
		        ElMessage({
		          message: "请选择正确的文件格式",
		          type: "error",
		          offset: 60
		        });
		        return false;
		      }
		      return isLt20M && isFile;
        };
    
     onMounted(async () => {
      data.postUrl = "http://XXXXX/file/uploadFile";
    });
    
   }
  }
 </script>
<style lang="scss" scoped>
                  //修改上传图标的样式
			  .uploadIcon {
					  border: 1px dashed var(--el-border-color);
					  border-radius: 5px;
					  padding: 2px 12px;
			     }
</style>

如图
在这里插入图片描述

1.实现上传,修改获取的文件name和url

在这里插入图片描述在这里插入图片描述
2.上传文件前进行操作

在这里插入图片描述
限制上传格式和大小
在这里插入图片描述
删除清空存放文件的数组
在这里插入图片描述

4.点击已上传文件进行下载
在这里插入图片描述

在这里插入图片描述
3. 查看时,不允许删除文件
主要用到before-remove 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false ,则停止删除,不在执行:on-remove="handleRemove"事件
在这里插入图片描述

### 如何在Ollama DeepSeek中使用函数调用 #### 函数调用概述 大模型API调用,特别是Function Calling功能,在提升推理准确性方面表现出色[^1]。对于希望提高开发效率并简化复杂操作(如多表SQL查询)的应用场景而言,这一特性尤为有用[^3]。 #### 实现过程 为了实现此目的,开发者需遵循特定流程来配置和利用这些能力: - **定义目标函数** 需要先明确定义想要通过API执行的具体行为或逻辑。例如,如果目的是优化内存管理,则可能涉及检测泄漏等问题;而如果是关于性能分析,则会关注热点路径识别等内容[^2]。不过针对Ollama DeepSeek中的函数调用来说,更常见的是处理数据检索、转换等任务。 - **编写请求体结构** 构建向服务端发送的数据包时,应按照官方文档指示设置必要的参数字段。通常情况下这包括但不限于指定使用的模型名称、版本号以及待传递给内部方法的实际输入值。 ```json { "model": "DeepSeek", "function_call": { "name": "execute_sql_query", "arguments": {"query": "SELECT * FROM users WHERE age > ?"} } } ``` 上述JSON片段展示了如何构建一个用于触发`execute_sql_query`函数的请求实例,其中包含了预编写的SQL语句作为参数之一。 - **解析响应结果** 成功提交之后,服务器将以相同格式返回计算后的输出信息。此时可以根据业务需求进一步加工展示给最终用户查看或是存入其他存储介质内备用。 ```python import requests response = requests.post('https://api.example.com/v1/deepseek', json={ 'model': 'DeepSeek', 'function_call': {'name': 'get_user_by_id', 'arguments': {'id': 1}} }) if response.status_code == 200: user_data = response.json() else: error_message = f"Error occurred: {response.text}" ``` 这段Python代码说明了怎样发起POST请求并与之交互获取所需资源的过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值