Docker+FastDFS+Nginx上传图片

图片

Docker+FastDFS+Nginx上传图片_第1张图片
Docker+FastDFS+Nginx上传图片_第2张图片

yml

fdfs:
  # 连接超时时间
  connect-timeout: 600
  # 读取时间
  so-timeout: 1500
  tracker-list:
    - 192.168.190.132:22122
  # 缩略图配置
  thumb-image:
    width: 100
    height: 100

文件大小

spring:
  profiles:
    active: @spring.profiles.active@
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  servlet:
    multipart:
      enabled: true
      max-file-size: 100MB
      max-request-size: 100MB

依赖

       <!--操作流 上传文件操作工具-->
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <!--fastdfs 分布式文件系统  fastdfs 服务端(linux)-->
            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>${fastdfs-client}</version>
            </dependency>

搭建FastDfs

docker pull delron/fastdfs

# tracker容器

docker run -dti --network=host --name tracker -v  ${HOME}/docker/fdfs/tracker:/var/fdfs delron/fastdfs tracker

# storage容器 (如果无法启动 删除tracker容器 重新开启两个容器并启动)


docker run -dti --network=host --name storage -e TRACKER_SERVER=192.168.190.132:22122 -v ${HOME}/storage:/var/fdfs delron/fastdfs storage

这里的ip是自己的ip

Docker+FastDFS+Nginx上传图片_第3张图片

# 容器自启动

docker update --restart=always tracker
docker update --restart=always storage

IUploadService

Docker+FastDFS+Nginx上传图片_第4张图片

UploadServiceImpl

package com.briup.cms.service.impl;

import com.briup.cms.service.IUploadService;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @Auther: vanse(lyc))
 * @Date: 2022/11/4-11-04-9:32
 * @Description:com.briup.cms.service.impl
 */
@Service
public class UploadServiceImpl implements IUploadService {
    // tracker 追踪 文件服务器
    // storage 存文件
    @Autowired
    private FastFileStorageClient storageClient;
    @Override
    public String upload(MultipartFile file) {
        // hello.jpg
        String originalFilename = file.getOriginalFilename();
        // groupName 组
        // inputstream 文件的流形式
        // size 文件的大小
        // fileExtName 文件后缀 jpg/png
        try {
            // 文件返回的路径 /group1/00/00/文件.jpg
            StorePath storePath = storageClient.uploadFile(
                    "group1",
                    file.getInputStream(), file.getSize(), "jpg");
            // 主机+端口+返回路径 默认tracker端口8888 (固定)
            String path = "http://192.168.190.132:8888/"+storePath.getFullPath();
            System.out.println("path = " + path);
            return path;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


}

这里的ip也是自己的ip

UploadController

package com.briup.cms.web.controller;

import com.briup.cms.service.IUploadService;
import com.briup.common.web.response.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Auther: vanse(lyc))
 * @Date: 2022/11/4-11-04-9:41
 * @Description:com.briup.cms.web.controller
 */
@RestController
@Api(tags = "文件上传")
public class UploadController {
    @Autowired
    private IUploadService uploadService;
    // post multipart-form
    @ApiImplicitParams(
            @ApiImplicitParam(name = "file",value = "文件",paramType = "form",dataType ="__file" )
    )

    @PostMapping(value = "/upload",consumes = "multipart/form-data")

    public Result upload(@RequestParam("file")   MultipartFile file){
        String path = uploadService.upload(file);
        System.out.println(file);
        return Result.success(path);

    }
}

Docker+FastDFS+Nginx上传图片_第5张图片

Docker+FastDFS+Nginx上传图片_第6张图片

你可能感兴趣的:(springboot,ubuntu,java基础点,docker,nginx,java,springboot)