SSM视频教程第4-3节:SpringMVC整合FastDFS实现文件上传下载

Java文件服务器 FastDFS 的搭建教程使用 Nginx 访问 FastDSF 文件服务器中我们已经在 搬瓦工Linux 上安装部署了 fastdfs,并且可以用 Nginx 访问了。

那么接下来就在我们的项目中使用 fastdfs 吧。

下载fastdfs-client-java

安装依赖fastdfs-client-java

使用 maven 将 fastdfs-client-java 安装到 maven 仓库之后进行依赖。

创建 fastdfs 客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class FastDFSClient {

private static StorageClient1 storageClient1 = null;

static {
try {
// 获取配置文件
String classPath = new File(FastDFSClient.class.getResource("/").getFile()).getCanonicalPath();
String CONF_FILENAME = classPath + File.separator + "conf" + File.separator + "fdfs_client.conf";
ClientGlobal.init(CONF_FILENAME);
// 获取触发器
TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
TrackerServer trackerServer = trackerClient.getConnection();
// 获取存储服务器
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
storageClient1 = new StorageClient1(trackerServer, storageServer);
} catch (Exception e) {
System.out.println(e);
}
}

/**
* @param fis 文件输入流
* @param fileName 文件名称
* @return
*/
public static String uploadFile(InputStream fis, String fileName) {
try {
NameValuePair[] meta_list = null;

//将输入流写入file_buff数组
byte[] file_buff = null;
if (fis != null) {
int len = fis.available();
file_buff = new byte[len];
fis.read(file_buff);
}

String fileid = storageClient1.upload_file1(file_buff, getFileExt(fileName), meta_list);
return fileid;
} catch (Exception ex) {
return null;
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
}


private static String getFileExt(String fileName) {
if (StringUtils.isBlank(fileName) || !fileName.contains(".")) {
return "";
} else {
return fileName.substring(fileName.lastIndexOf(".") + 1);
}
}
}

SpringMVC添加文件上传的bean

1
2
3
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8" >
</bean>

接着就可以使用Cotroller书写文件上传了。

项目模块依赖补充

安装一些通用模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

<commons-fileupload>1.3.1</commons-fileupload>
<commons-io>2.2</commons-io>
<commons-lang3>3.1</commons-lang3>

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload}</version>
</dependency>

<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io}</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3}</version>
</dependency>

参考

相关

Java文件服务器 FastDFS 的搭建教程
使用 Nginx 访问 FastDSF 文件服务器

SSM视频教程目录