最后
每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。
如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份限量版的Java零基础宝典能够对你有所帮助。
我们在IDEA中创建一个Maven项目,并在pom.xml文件中引入SpringBoot相关依赖和我们自己编译的FastDFS的Java客户端。最终,pom.xml文件的依赖如下所示。
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skip_maven_deploy>false</skip_maven_deploy>
<java.version>1.8</java.version>
<logback.version>1.1.7</logback.version>
<slf4j.version>1.7.21</slf4j.version>
<common.logging>1.2</common.logging>
<fastjson.version>1.2.51</fastjson.version>
<fastdfs.client.version>1.29</fastdfs.client.version>
org.springframework.boot
spring-boot-starter-parent
2.2.6.RELEASE
org.springframework.boot
spring-boot-starter-test
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-undertow
org.springframework.boot
spring-boot-configuration-processor
true
commons-logging
commons-logging
${common.logging}
org.slf4j
slf4j-api
${slf4j.version}
ch.qos.logback
logback-classic
${logback.version}
com.alibaba
fastjson
${fastjson.version}
com.fastdfs
fastdfs-client-java
${fastdfs.client.version}
创建配置文件
(1)在项目的src/main/resources目录下创建SpringBoot的配置文件application.yml,文件内容如下所示。
server:
port: 9999
servlet:
context-path: /resource
tomcat:
uri-encoding: UTF-8
spring:
servlet:
multipart:
max-file-size: 1024MB
max-request-size: 1024MB
main:
allow-bean-definition-overriding: true
profiles:
include: test
active: test
output:
ansi:
enabled: detect
文件指定了项目启动后监听的端口,访问的根路径、项目编码、文件上传的大小,并指定了运行时的环境。
(2)在项目的src/main/resources目录下创建logback-spring.xml日志文件,具体配置见源码工程。
(3)在项目的src/main/resources目录下创建fastdfs_client.conf文件,主要用来配置与FastDFS的连接信息。
connect_timeout = 200
network_timeout = 3000
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
tracker_server = 192.168.175.100:22122
至此,项目搭建完成。接下来,我们就一起实现项目的功能。
创建工具类
首先,我们在项目的io.mykit.fastdfs.utils包下创建FastDFSClientUtils工具类。这里,我给出工具类的核心实现,其他部分小伙伴们参加源码工程。
/**
-
@author binghe
-
@description FastDFS分布式文件系统操作客户端
*/
public class FastDFSClientUtils {
private static Logger logger = LoggerFactory.getLogger(FastDFSClientUtils.class);
private static TrackerClient trackerClient;
public static void setFile(String filePath) {
try {
logger.info(“初始化分布式文件系统服务开始…”);
if(filePath == null || filePath.trim().isEmpty()) {
filePath = “fastdfs_client.conf”;
}
ClientGlobal.init(filePath);
TrackerGroup trackerGroup = ClientGlobal.g_tracker_group;
trackerClient = new TrackerClient(trackerGroup);
logger.info(“初始化分布式文件系统服务完成…”);
} catch (Exception e) {
logger.error(“加载文件异常:{}”,e );
}
}
/**
-
@param data 数据
-
@param extName 文件扩展名
-
@return 上传成功返回id,失败返回null
*/
public static String upload(byte[] data, String extName) {
TrackerServer trackerServer = null;
StorageServer storageServer = null;
StorageClient1 storageClient1 = null;
try {
NameValuePair[] meta_list = null; // new NameValuePair[0];
trackerServer = trackerClient.getTrackerServer();
if (trackerServer == null) {
logger.error(“getConnection return null”);
}
storageServer = trackerClient.getStoreStorage(trackerServer);
storageClient1 = new StorageClient1(trackerServer, storageServer);
String fileid = storageClient1.upload_file1(data, extName, meta_list);
return fileid;
} catch (Exception ex) {
logger.error(“上传文件异常:{}”, ex);
return null;
}finally{
try {
storageClient1.close();
} catch (IOException e) {
e.printStackTrace();
}
storageClient1 = null;
}
}
创建返回实体类
我们在io.mykit.fastdfs.bean包下创建ResourceBean类,用于SpringBoot接口返回结果数据,如下所示。
/**
-
@author binghe
-
@version 1.0.0
-
@description 上传图片后的返回数据
*/
public class ResourceBean implements Serializable {
private static final long serialVersionUID = -2788538880352897307L;
/**
- 文件的访问路径
*/
private String fileUrl;
/**
- 文件名称
*/
private String fileName;
public ResourceBean() {
super();
}
public ResourceBean(String fileUrl, String fileName) {
super();
this.fileUrl = fileUrl;
this.fileName = fileName;
}
public String getFileUrl() {
return fileUrl;
}
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}
其中,定义了文件的访问路径fileUrl和文件的名称fileName。也就是说,文件上传成功后,我们会向客户端返回文件的访问路径和文件的名称信息。
创建常量类
在io.mykit.fastdfs.constants包下创建ResourcesConstants常量类,ResourcesConstants类中主要定义了访问文件的基础路径和获取文件完整访问路径的方法,如下所示。
/**
-
@author binghe
-
@version 1.0.0
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
高效学习视频
esourcesConstants类中主要定义了访问文件的基础路径和获取文件完整访问路径的方法,如下所示。
/**
-
@author binghe
-
@version 1.0.0
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
[外链图片转存中…(img-VofyeliX-1715047111693)]