美文网首页
Java操作SeaweedFS

Java操作SeaweedFS

作者: 热心肠的徐同学 | 来源:发表于2019-06-10 17:43 被阅读0次

前置条件是seaweedfs服务已成功启动,具体部署可参考我上篇文章SeaweedFS部署及使用指南

  • 首先导入pom依赖
        <dependency>
            <groupId>net.anumbrella.seaweedfs</groupId>
            <artifactId>seaweedfs-java-client</artifactId>
            <version>0.0.2.RELEASE</version>
        </dependency>
  • 编写SeaweedFS配置类SeaweedFSConfig
@Configuration
public class SeaweedFSConfig {

    @Value("${seaweedfs.host}")
    private String host;
    @Value("${seaweedfs.port}")
    private int port;

    @Bean
    public FileTemplate fileTemplate() {
        FileSource fileSource = new FileSource();
        // SeaweedFS master服务ip地址
        fileSource.setHost(host);
        // SeaweedFS master服务端口
        fileSource.setPort(port);
        try {
            // 启动服务
            fileSource.startup();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new FileTemplate(fileSource.getConnection());
    }
}

我的application.properties配置文件如下:

seaweedfs.host=192.168.1.55 #多个ip地址用逗号隔开
seaweedfs.port=9333
  • 上传文件的方法如下,用的是Spring的JUnit测试:
@Autowired
private FileTemplate template;

@Test
public void testSeaweedFS() throws IOException {
        // 上传可以指定文件名
        FileHandleStatus handleStatus = template.saveFileByStream("new_name.pdf", new FileInputStream(new File("C:\\Users\\xuyan\\Desktop\\test.pdf")));
        // 获取文件ID,可通过这个ID获取到文件
        String fileId = handleStatus.getFileId();
        StreamResponse fileStream = template.getFileStream(fileId);
        InputStream inputStream = fileStream.getInputStream();
        // 获取流之后流拷贝输出到本地
        IOUtils.copy(inputStream,new FileOutputStream(new File("D:/new_name.pdf")));

    }

相关文章

网友评论

      本文标题:Java操作SeaweedFS

      本文链接:https://www.haomeiwen.com/subject/mbhtfctx.html