Element Ui 之 文件上传组件的使用 Upload

最近正好学到了Element Ui的文件上传组件,虽然不太难但一个人琢磨还是整了很久

以下是我整理的规范性文件上传组件为例

文件上传组件

前端

    <!--action:设置文件上传路径
        limit:设置图片上传的最大数量
        name:设置文件上传的参数名称
        handleRemove:图片上的删除按钮调用的方法
    -->
    <el-upload
        action="/upload"
        limit="1"
        name="picFile"
        list-type="picture-card"
        :on-preview="handlePictureCardPreview"
        :on-remove="handleRemove">
        <i class="el-icon-plus"></i>
    </el-upload>
    <el-dialog :visible.sync="dialogVisible">
        <img width="100%" :src="dialogImageUrl" alt="">
    </el-dialog>
    <el-button type="success">上传图片</el-button>

后端

此处的String dirPath = "D:/files"可以选取你电脑上的指定位置

@RequestMapping("/upload")
public String upload(MultipartFile picFile){// 参数名需要与组件中制定的name属性名一致
    String fileName = picFile.getOriginalFilename();// 得到文件的初始文件全名
    System.out.println(fileName);
    // 文件数据需要存储到数据库服务器磁盘中
    // 如果使用文件全名容易出现文件重名覆盖问题
    // 使用UUID.randomUUID生成唯一的16进制唯一标识符可避免这中问题
    String suffix = fileName.substring(fileName.lastIndexOf("."));// 截取后缀名
    fileName = UUID.randomUUID()+suffix;
    System.out.println(fileName);
    // 此时生成的文件名是唯一的
    // 如果网站传输数据量过大,将上传的文件都存到一个文件夹中会使文件夹中的文件太多
    // 此时最好给文件做一个分流处理
    // 计划以当前上传事件为节点生成不同的文件目录达到此效果
    String dirPath = "D:/files";// 指定存储位置
    // 准备日期路径:                                  /2023/03/07/文件名
    SimpleDateFormat format = new SimpleDateFormat("/yyyy/MM/dd/");
    String datePath = format.format(new Date());// 得到当前系统使时间
    File dirFile = new File(dirPath+datePath);
    if(!dirFile.exists()){
        dirFile.mkdirs();//如果当前日期的文件夹不存在就创建一个
    }
    System.out.println(dirFile.getPath());// 文件路径为D:\files\2023\03\07
    String filePath = dirPath+datePath+fileName;// 图片地址的全名
    picFile.transferTo(new File(filePath));
    // 将文件的时间路径+文件路径响应给客户端,做其他操作
    return datePath+fileName;
}

接上面

组件之文件删除

// 此时发出删除图片的请求
handleRemove(file, fileList) {
//    组件中handleRemove中传递来的file参数有一个response方法,他是刚才上传图片时返回的时间路径+文件路径
//    调用file.response,以此路径为参数传递到后端做删除操作    
    console.log(file, fileList);
    axios.get("/remove?url="+file.response).then(function (){
        console.log("删除完成!");
    })
}
@RequestMapping("/remove")
public void remove(String url){
    System.out.println("url = " + url);
    // 接收到的路径与不变的文件路径进行拼接获得全路径名做删除操作
    File file = new File("D:/files" + url);
    file.delete();
}

如有错误,欢迎指出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值