Vue element 删除已上传文件

本文介绍如何在Vue Element的上传组件中实现删除文件的功能。通过前端使用axios发送POST请求来传递文件名,并在后端接收到请求后,从指定路径删除对应的文件。

问题描述

Vue elment中提供了upload 但是未能给出删除错误文件的方法。因此为解决该问题,采用axios 进行删除。

前端代码

handleRemove(file, fileList) {
        console.log(file.name, fileList);
        this.$axios.post('/api/delete',file.name ) //请求头要为表单
          .then(response=>{
            console.log(response.data);
          })
          .catch(function (error) {
            console.log(error);
          })
      },

后端代码

@app.route('/delete',methods=["POST"])
def delete():
    # test
    # ESRpath = app.config['ESR']+"//123123"
    img_stream = ''
    file_obj = request.get_data(as_text=True)
    print (file_obj)
    if file_obj is None:
        # 表示没有发送文件
        return "未上传文件"
    # filename = secure_filename(file_obj.filename)
    
    '''
        将文件保存到本地(即当前目录)
        直接使用上传的文件对象保存
    '''

    file_path = os.path.join(ESRpath, file_obj)
    os.remove(file_path)
    # blend_pic = blend_two_images(file_obj)

    # img_stream = base64.b64encode(blend_pic)
    print ("Delete done")
    return "Delete done"
### Vue3 中使用 Element Plus 文件上传组件的指南 在 Vue 3 中集成 Element Plus 的文件上传功能是一项常见的需求,通过 `el-upload` 组件可以轻松实现文件上传、校验和管理。以下内容将详细介绍如何配置和使用该组件。 #### 安装 Element Plus 首先需要安装 Element Plus 组件库。可以通过以下命令使用你喜欢的包管理器进行安装[^4]: ```bash npm install element-plus --save ``` 或者使用 Yarn 或 pnpm: ```bash yarn add element-plus pnpm install element-plus ``` #### 引入 Element Plus 在项目中全局引入 Element Plus 及其样式文件。可以在项目的入口文件(如 `main.js` 或 `main.ts`)中添加以下代码[^1]: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; const app = createApp(App); app.use(ElementPlus); app.mount('#app'); ``` #### 使用 `el-upload` 组件 Element Plus 提供了强大的 `el-upload` 组件,支持多种文件操作功能,包括上传、校验、删除等。以下是一个基本的示例代码[^2]: ```vue <template> <div> <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-upload="beforeUpload" :on-success="handleSuccess" :file-list="fileList" multiple > <el-button type="primary">点击上传</el-button> <template #tip> <div class="el-upload__tip"> 只能上传 jpg/png 文件,且不超过 500kb </div> </template> </el-upload> </div> </template> <script> export default { data() { return { fileList: [], // 文件列表 }; }, methods: { handlePreview(file) { console.log('预览文件:', file); }, handleRemove(file, fileList) { console.log('移除文件:', file, fileList); }, beforeUpload(file) { const isJPGOrPNG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt500K = file.size / 1024 < 500; if (!isJPGOrPNG) { this.$message.error('只能上传 JPG/PNG 格式的文件!'); } if (!isLt500K) { this.$message.error('文件大小不能超过 500KB!'); } return isJPGOrPNG && isLt500K; }, handleSuccess(response, file, fileList) { console.log('上传成功:', response, file, fileList); }, }, }; </script> <style> .upload-demo .el-upload { margin-top: 20px; } </style> ``` #### 功能说明 - **`action`**: 指定文件上传的目标 URL。 - **`on-preview`**: 点击文件列表中的文件时触发的回调函数。 - **`on-remove`**: 移除文件时触发的回调函数。 - **`before-upload`**: 文件上传前的钩子函数,用于校验文件类型和大小。 - **`on-success`**: 文件上传成功后的回调函数。 - **`file-list`**: 绑定当前文件列表的数据源。 #### 自定义事件与父子组件协作 如果需要将文件列表从子组件传递到父组件,可以通过自定义事件机制实现[^3]。例如,在子组件中使用 `$emit` 方法通知父组件文件的变化。 #### 常见问题与解决方案 1. **文件上传失败**:检查目标 URL 是否正确以及服务器端是否支持文件接收。 2. **文件类型限制**:通过 `before-upload` 钩子函数实现自定义校验逻辑。 3. **进度条不显示**:确保目标 URL 返回正确的响应数据。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值