準備docker環境(略)
編寫docker-compose.yml
version: '3'
services:
fastdfs:
image: registry.cn-hangzhou.aliyuncs.com/qbanxiaoli/fastdfs
container_name: fastdfs-single
environment:
# nginx服務端口,默認80端口,可修改
WEB_PORT: 9080
# tracker_server服務端口,默認22122端口,可修改
FDFS_PORT: 22122
# fastdht服務端口,默認11411端口,可修改
FDHT_PORT: 11411
# docker所在的宿主機內網地址,默認使用eth0網卡的地址
IP: 192.168.31.163
volumes:
# 將本地目錄映射到docker容器內的fastdfs數據存儲目錄,將fastdfs文件存儲到主機上,以免每次重建docker容器,之前存儲的文件就丟失了。
- ./fastdfs:/var/local
# 網絡模式爲host,可不暴露端口,即直接使用宿主機的網絡端口,只適用於linux系統
network_mode: host
引入依賴配置
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>${fastdfs-version}</version>
</dependency>
編寫測試代碼
fdfs:
thumb-image: #縮略圖生成參數
width: 150
height: 150
tracker-list: #TrackerList參數,支持多個
- 192.168.31.163:22122
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class FastFileStorageClientTest {
@Autowired
private FastFileStorageClient storageClient;
@Test
public void testUploadFile() throws IOException {
//URL testResource = FastFileStorageClientTest.class.getResource("/application.yml");
//log.info(testResource.toString());
Resource testResource = new ClassPathResource("/application.yml");
StorePath storePath = storageClient.uploadFile(new FastFile.Builder()
.withFile(testResource.getInputStream(), testResource.contentLength(), "yml")
.build()
);
log.info(storePath.getFullPath());
}
}
更多使用案例
https://github.com/tobato/FastDFS_Client/tree/master/src/test/java/com/github/tobato/fastdfs/service