1、下载FastDFS相关jar包
2、pom.xml配置文件内容如下
<dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.25</version> <scope>system</scope> <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/fastdfs-client-java-1.25.jar</systemPath> </dependency>
3、FastDFS上传下载文件相关代码
package com.ksource.common.util; import org.csource.fastdfs.*; import java.io.*; /** * @Author dxy * @Date 2023/3/30 10:04 * @Description */ public class FastDFSUtil { public static void main(String[] args) { // 上传文件 testUpload(); // 下载文件 //testDownload(); } private static void testUpload() { try{ // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。TODO 改成自己的路径 ClientGlobal.init("E:\\fdfs_client.conf"); // 2、创建一个 TrackerClient 对象。直接 new 一个。 TrackerClient trackerClient = new TrackerClient(); // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 TrackerServer trackerServer = trackerClient.getConnection(); // 4、创建一个 StorageServer 的引用,值为 null StorageServer storageServer = null; // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 StorageClient storageClient = new StorageClient(trackerServer, storageServer); // 6、使用 StorageClient 对象上传图片。 //扩展名不带“.” TODO 改成自己的路径 String[] strings = storageClient.upload_file("D:\\Alley.jpg", "jpg", null); // 7、返回数组。包含组名和图片的路径。 for (String string : strings) { System.out.println(string); } // http://ip/group1/M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg } catch (Exception e){ e.printStackTrace(); } } /** * 下载文件 */ public static void testDownload() { try { // 配置文件 TODO 改成自己的路径 ClientGlobal.init("E:\\fdfs_client.conf"); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); //http://ip/group1/M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg byte[] b = storageClient.download_file("group1", "M00/00/50/CkEMS2Qk8GCARwatAABoGTxiW-s049.jpg"); // 下載文件 download(b); } catch (Exception e) { e.printStackTrace(); } } public static void download(byte[] bytesArray) { FileOutputStream fos = null; File file; try { // TODO 改成自己的路径 file = new File("E:\\picture.jpg"); fos = new FileOutputStream(file); fos.write(bytesArray); fos.flush(); System.out.println("成功"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) { fos.close(); } } catch (IOException ioe) { System.out.println("出錯了"); } } } }
4、fdfs_client.conf配置文件内容如下
# connect timeout in seconds # default value is 30s connect_timeout=30 # network timeout in seconds # default value is 30s network_timeout=60 # the base path to store log files # 改这里 文件存储的路径 base_path=/app/fastdfs_document/data # tracker_server can ocur more than once, and tracker_server format is # "host:port", host can be hostname or ip address # 改这里,防火墙记得关了或者开通端口,安全组也要加入,如果有的话 tracker_server=10.65.12.75:22122 #standard log level as syslog, case insensitive, value list: ### emerg for emergency ### alert ### crit for critical ### error ### warn for warning ### notice ### info ### debug log_level=info # if use connection pool # default value is false # since V4.05 use_connection_pool = false # connections whose the idle time exceeds this time will be closed # unit: second # default value is 3600 # since V4.05 connection_pool_max_idle_time = 3600 # if load FastDFS parameters from tracker server # since V4.05 # default value is false load_fdfs_parameters_from_tracker=false # if use storage ID instead of IP address # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # default value is false # since V4.05 use_storage_id = false # specify storage ids filename, can use relative or absolute path # same as tracker.conf # valid only when load_fdfs_parameters_from_tracker is false # since V4.05 storage_ids_filename = storage_ids.conf #HTTP settings 访问nginx的端口 改这里 http.tracker_server_port=80 #use "#include" directive to include HTTP other settiongs ##include http.conf