Docker+FastDFS+Nginx上传图片

图片

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

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 update --restart=always tracker
docker update --restart=always storage

IUploadService

在这里插入图片描述

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);

    }
}

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值