SpringBoot 利用MultipartFile上传本地图片生成图片链接

方法一

实现类:

    public String fileUpload(MultipartFile file) {
        if(file == null){
            return  null;
        }
        String fileName = file.getOriginalFilename();
        fileName = FileUtil.renameToUUID(fileName);

        //自定义保存到本地路径
        String uploadpath = "D:/image/";

        try{
            FileUtil.uploadFiles(file.getBytes(), uploadpath,fileName);

        }catch (Exception e){
            throw  new SignException(001,"图片上传出错"+uploadpath);
        }
         //localhost:8080
        String url = "/static/" + fileName;
        return url;
    }

工具类:

public class FileUtil {
    //图片上传
    public static void uploadFiles(byte[] file, String filePath, String fileName) throws Exception {

        File targetFile = new File(filePath);

        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        FileOutputStream out = new FileOutputStream(filePath + fileName);
        out.write(file);
        out.flush();
        out.close();

    }

    //创建新的文件名
    public static String renameToUUID(String fileName) {
        return UUID.randomUUID() + "." + fileName.substring(fileName.lastIndexOf(".") + 1);
    }
}

浏览器输入ip地址端口号+自己的生成url就可以访问了:
localhost:8080/ + url

方法二:

配置文件

#=============文件上传========#
# 文件访问路径
file.path=/upload/**
# 静态资源文件访问路径
file.staticPath=/upload
#文件保存的绝对路径
file.address=d://springbootimage/
#是否支持 multipart 上传文件
spring.servlet.multipart.enabled=true
#最大支持文件大小
spring.servlet.multipart.max-file-size=30MB
#最大支持请求大小
spring.servlet.multipart.max-request-size=30MB
    //获取图片上传的配置路径
    @Value("${file.address}")
    String fileAdress;

    //用户访问的图片路径
    @Value("${file.staticPath}")
    String upload;

    @RequestMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file){
        try {
            //定义上传文件的前缀
            String pre = "";
            //保证文件上传后 存到服务器的文件名的唯一性
            pre = UUID.randomUUID()+"";

            //获取文件的后缀名
            String suffix = "";
            if(file != null){
                //.jpg
                String originalName = file.getOriginalFilename();
                suffix=  originalName.substring(originalName.lastIndexOf(".")+1);
            }
            //文件名
            String fileName = pre+suffix;

            //定义 文件上传的全路径
            String filePath = fileAdress + "\\" + fileName ;

            //创建file对象
            File f = new File(filePath);
            //目录是否存在,不存在则创建
            if(!f.isDirectory()){
                f.mkdirs();
            }
            //上传文件
            file.transferTo(f);
            String url = upload+fileName ;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "上传失败";
    }
你可以使用以下代码将Spring Boot中的MultipartFile对象保存到本地: ```java import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; public String saveMultipartFileLocally(MultipartFile multipartFile, String directory) throws IOException { if (multipartFile.isEmpty()) { throw new IllegalArgumentException("MultipartFile is empty"); } if (StringUtils.isEmpty(directory)) { throw new IllegalArgumentException("Directory path is empty"); } String fileName = multipartFile.getOriginalFilename(); String filePath = directory + File.separator + fileName; File file = new File(filePath); multipartFile.transferTo(file); return file.getAbsolutePath(); } ``` 这段代码中,我们首先检查MultipartFile对象是否为空,然后获取原始文件名并拼接出保存的文件路径。接下来,我们创建一个File对象,并使用transferTo()方法将MultipartFile保存到指定的本地目录中。最后,返回保存文件的绝对路径。 请注意,你需要提供一个合适的目录路径作为参数,确保目录存在并且有足够的权限进行文件保存。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot使用MultipartFile获取上传视频的时长(不用在本地生成临时文件)](https://blog.csdn.net/a116385895/article/details/104990689)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SpringbootMultipartFile的使用](https://blog.csdn.net/weixin_52457750/article/details/128532848)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot环境下将File转换成MultipartFile](https://blog.csdn.net/CS5686/article/details/129209448)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值