Spring Boot整合图片服务器

1、通过git下载fastdfs的客户端

https://github.com/happyfish100/fastdfs-client-java
在这里插入图片描述

或者用我下载好的

点击跳转到fastdfs下载页面
(下载所需积分/C币:0,但是csdn总会自动修改下载积分,如果不是0可以联系)


2、将fastdfs的客户端打包到本地maven仓库中


1)把将fastdfs的客户端拷贝到你的项目

在这里插入图片描述

2)导入maven

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转成maven后图标就变了
在这里插入图片描述

3)安装到本地仓库

右边maven也有了这个项目,刷新后install

在这里插入图片描述

3、将fastdfs整合到pom中

在这里插入图片描述

1)在需要使用fastdfs的工程中引入依赖

在这里插入图片描述

4、测试

在这里插入图片描述
在这里插入图片描述

GmallManagerWebApplicationTests

package com.atguigu.gmall.manager;

import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest
public class GmallManagerWebApplicationTests {

    @Test
    public void contextLoads() throws IOException, MyException {
        // 配置fdfs的全局链接地址
        String tracker = GmallManagerWebApplicationTests.class.getResource("/tracker.conf").getPath();// 获得配置文件的路径

        ClientGlobal.init(tracker);

        TrackerClient trackerClient = new TrackerClient();

        // 获得一个trackerServer的实例
        TrackerServer trackerServer = trackerClient.getTrackerServer();

        // 通过tracker获得一个Storage链接客户端
        StorageClient storageClient = new StorageClient(trackerServer,null);

        String[] uploadInfos = storageClient.upload_file("d:/a.jpg", "jpg", null);

        String url = "http://192.168.25.133";

        for (String uploadInfo : uploadInfos) {
            url += "/"+uploadInfo;
            //url = url + uploadInfo;
        }
        System.out.println(url);
    }
}

运行后打印出拼接好的路径
在这里插入图片描述

在这里插入图片描述

5、实现

controller层代码

@RequestMapping("fileUpload")
    @ResponseBody
    public String saveSpuInfo(@RequestParam("file") MultipartFile multipartFile){
        //将图片或者音频上传到分布式的文件存储系统
        //将图片的存储路径返回给页面
        String imgUrl = PmsUploadUtil.uploadImage(multipartFile);
        System.out.println(imgUrl);
        return imgUrl;
    }

PmsUploadUtil工具类

package com.atguigu.gmall.utils;

import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

public class PmsUploadUtil {
    public static String uploadImage(MultipartFile multipartFile) {

        String imgUrl = "http://192.168.25.133";

        //上传图片到服务器
        // 配置fdfs的全局链接地址
        String tracker = PmsUploadUtil.class.getResource("/tracker.conf").getPath();// 获得配置文件的路径

        try {
            ClientGlobal.init(tracker);
        } catch (Exception e) {
            e.printStackTrace();
        }

        TrackerClient trackerClient = new TrackerClient();

        // 获得一个trackerServer的实例
        TrackerServer trackerServer = null;
        try {
            trackerServer = trackerClient.getTrackerServer();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 通过tracker获得一个Storage链接客户端
        StorageClient storageClient = new StorageClient(trackerServer,null);

        String[] uploadInfos = new String[0];
        try {
            byte[] bytes = multipartFile.getBytes(); //获得上传的二进制对象

            //根据文件名称截取文件后缀名
            String originalFilename = multipartFile.getOriginalFilename();
            System.out.println(originalFilename);
            //最后一个点的位置
            int i = originalFilename.lastIndexOf(".");
            String extName = originalFilename.substring(i + 1);

            uploadInfos = storageClient.upload_file(bytes, extName, null);


            for (String uploadInfo : uploadInfos) {
                imgUrl += "/"+uploadInfo;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(imgUrl);

        return imgUrl;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40803085/article/details/105775046