FastDFS之java客户端使用

时间:2016-05-21 21:41:54   收藏:0   阅读:16431

为了方便应用程序的访问FastDFS,官网提供了fastdfs-client-java,以便更好的与应用程序结合使用。

下载fastdfs-client-java源码添加到项目工程里面,添加配置文件:fdfs_client.conf

这个jar包在中央仓库是没有的,我们可以将源码下载下来,使用maven install安装到本地仓库。

技术分享

附上pom.xml文件

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.25</version>
    <name>fastdfs-client-java</name>
    <description>fastdfs client with java</description>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    </properties>

    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <skip>true</skip>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <excludes>
                                <exclude>**/test/*.class</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

 

在自己的maven项目中加入坐标

 

 

<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.25</version>

 

即可。

测试文件上传

项目的配置文件

fdfs_client.conf

connect_timeout = 2
network_timeout = 30
#对这些设置还不是很清楚
charset = ISO8859-1
http.tracker_http_port = 8080
http.anti_steal_token = no
http.secret_key = FastDFS1234567890

#tracker_server的设置是必须的
tracker_server = 192.168.0.111:22122

 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;

public class FastDFSTest {
    public static void main(String[] args) throws Exception {
        //加载配置文件的方式
        String configFileName = "D:\\IdeaProject\\taotao\\taotao-manager\\taotao-manager-web\\src\\
              main\\resources\\properties\\fdfs_client.conf"; try { ClientGlobal.init(configFileName); }catch(Exception e){ e.printStackTrace(); } File file = new File("C:/Users/Public/Pictures/Sample Pictures/qie.jpg"); //返回储存路径:group1 M00/00/00/wKhuW1Vmj6KAZ09pAAC9przUxEk788.jpg String[] files = uploadFile(file, "test.jpg", file.length()); System.out.println(Arrays.asList(files)); } /** * 上传文件 */ public static String[] uploadFile(File file, String uploadFileName, long fileLength) throws IOException { byte[] fileBuff = getFileBuffer(new FileInputStream(file), fileLength); String[] files = null; String fileExtName = ""; if (uploadFileName.contains(".")) { fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1); } else { System.out.println("Fail to upload file, because the format of filename is illegal."); return null; } // 建立连接 TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient client = new StorageClient(trackerServer, storageServer); // 设置元信息 NameValuePair[] metaList = new NameValuePair[3]; metaList[0] = new NameValuePair("fileName", uploadFileName); metaList[1] = new NameValuePair("fileExtName", fileExtName); metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength)); // 上传文件 try { files = client.upload_file(fileBuff, fileExtName, metaList); } catch (Exception e) { System.out.println("Upload file \"" + uploadFileName + "\"fails"); } trackerServer.close(); return files; } private static byte[] getFileBuffer(InputStream inStream, long fileLength) throws IOException { byte[] buffer = new byte[256 * 1024]; byte[] fileBuffer = new byte[(int) fileLength]; int count = 0; int length = 0; while ((length = inStream.read(buffer)) != -1) { for (int i = 0; i < length; ++i) { fileBuffer[count + i] = buffer[i]; } count += length; } return fileBuffer; } }

程序的执行结果

[group1, M00/00/00/wKgAb1dAU0WAQEhwAAvea_OGt2M139.jpg]

拼接之后就是图片的访问url了

http://192.168.0.111/group1/M00/00/00/wKgAb1dAU0WAQEhwAAvea_OGt2M139.jpg

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!