UploadController

目录

1. UploadController

1.1. // 获取原始文件名称

1.2. // 生成新文件名

1.3. // 保存文件

1.4. // 返回结果

1.5. // 获取后缀

1.6. // 生成目录

1.7. // 判断目录是否存在

1.8. // 生成文件名

  1. UploadController 

package com.goalias.controller;

import cn.hutool.core.io.FileUtil;

import cn.hutool.core.util.StrUtil;

import com.goalias.dto.Result;

import com.goalias.utils.SystemConstants;

import lombok.extern.slf4j.Slf4j;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;

import java.io.IOException;

import java.util.UUID;

@Slf4j

@RestController

@RequestMapping("upload")

public class UploadController {

    @PostMapping("blog")

    public Result uploadImage(@RequestParam("file") MultipartFile image) {

        try {

    1.             // 获取原始文件名称

            String originalFilename = image.getOriginalFilename();

    1.             // 生成新文件名

            String fileName = createNewFileName(originalFilename);

    1.             // 保存文件

            image.transferTo(new File(SystemConstants.IMAGE_UPLOAD_DIR, fileName));

    1.             // 返回结果

            log.debug("文件上传成功,{}", fileName);

            return Result.ok(fileName);

        } catch (IOException e) {

            throw new RuntimeException("文件上传失败", e);

        }

    }

    @GetMapping("/blog/delete")

    public Result deleteBlogImg(@RequestParam("name") String filename) {

        File file = new File(SystemConstants.IMAGE_UPLOAD_DIR, filename);

        if (file.isDirectory()) {

            return Result.fail("错误的文件名称");

        }

        FileUtil.del(file);

        return Result.ok();

    }

    private String createNewFileName(String originalFilename) {

    1.         // 获取后缀

        String suffix = StrUtil.subAfter(originalFilename, ".", true);

    1.         // 生成目录

        String name = UUID.randomUUID().toString();

        int hash = name.hashCode();

        int d1 = hash & 0xF;

        int d2 = (hash >> 4) & 0xF;

    1.         // 判断目录是否存在

        File dir = new File(SystemConstants.IMAGE_UPLOAD_DIR, StrUtil.format("/blogs/{}/{}", d1, d2));

        if (!dir.exists()) {

            dir.mkdirs();

        }

    1.         // 生成文件名

        return StrUtil.format("/blogs/{}/{}/{}.{}", d1, d2, name, suffix);

    }

}

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用\[1\]中提到了一个关于版本问题的错误。根据描述,这个错误是由于spring-cloud-starter-alibaba-seata的版本与spring-cloud-alibaba的版本不对应导致的。最终解决方法是将两个版本都改为2.1.3.RELEASE。这个错误可能是由于不兼容的版本之间的依赖关系引起的。\[1\] 引用\[2\]中提到了一个关于上传控制器的错误。根据描述,这个错误是由于在UploadController中的qiniuUtils字段的自动注入失败导致的。具体的错误信息是BeanCreationException。这个错误可能是由于没有正确配置或初始化qiniuUtils bean导致的。\[2\] 综合以上引用内容,可以推断出问题的原因是版本不对应导致的依赖问题和qiniuUtils bean的注入错误。解决方法是确保spring-cloud-starter-alibaba-seata和spring-cloud-alibaba的版本对应,并检查qiniuUtils bean的配置和初始化是否正确。 #### 引用[.reference_title] - *1* [springcloud集成seata启动报错](https://blog.csdn.net/zdb1314/article/details/124086707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest](https://blog.csdn.net/MTone1/article/details/83826124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

处处清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值