SpringMCV上传文件到文件服务器

前言

之前写过一篇关于SSM文件上传下载的文章,描述的是基于当前服务器的文件上传。随着一个系统业务不断增加,以及访问量很大的情况下,在同一个服务器中做数据存储读取、文件存储读取等显得不是那么的合适,很容以影响服务器的性能。如何解决这个问题是今天的主题。

一、思路

随着一个系统业务不断增加,服务器要存储的内容除了数据以外,还有文件,视频,音频,图片等。这些内容很明显是不建议存储到数据库中的,容易拉低数据库的性能。能不能有一个专门的服务器,来存放文件这些内容,那这个服务器就是文件存储服务器。(市面上已知的文件存储数据库有MongoDB,一个分布式的文件存储数据库)
核心的业务逻辑部署在一台服务器中,数据库部署在一台服务器中,文件存储系统部署在一台服务器中。需要查询数据,就从数据库的服务器中获取,需要文件上传下载就在文件存储系统服务器中操作。

二、搭建环境(Maven环境)

(一)搭建核心业务环境
1、先导包,这里只导入文件上传所需要依赖,SSM依赖可以参照SSM文件上传下载


<dependency>
    <groupId>commons-fileuploadgroupId>
    <artifactId>commons-fileuploadartifactId>
    <version>1.4version>
dependency>

<dependency>
    <groupId>com.sun.jerseygroupId>
    <artifactId>jersey-clientartifactId>
    <version>1.19.4version>
dependency>

2、编写Controller

@RequestMapping(path="/upload", method = RequestMethod.POST)
public String upload(@RequestParam MultipartFile file) throws Exception {
	// 获取文件名
	String filename = file.getOriginalFilename();
	// 为了实现同一个文件可以重复上传,这里通过UUID修改文件名
	String suffix = UUID.randomUUID().toString().replace("-", "");

	filename = suffix + filename;

	// 客户端
	Client client = Client.create();
	// 文件服务器地址,img为服务器上存储图片的地址
	String uploadServerPath = "http://localhost:9090/FileServer/img/" + filename;

	// 使用客户端创建连接
	WebResource resource = client.resource(uploadServerPath);
	// 把要上传的文件添加到连接中
	resource.put(file.getBytes());

	return "success.jsp";
}

3、编写jsp页面
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    核心业务,文件上传
    

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    上传成功


(二)搭建文件服务器
1、修改tomcat中的\apache-tomcat-9.0.27\conf\web.xml
SpringMCV上传文件到文件服务器_第1张图片

大概在119行
SpringMCV上传文件到文件服务器_第2张图片

<servlet>
	<servlet-name>defaultservlet-name>
	<servlet-class>org.apache.catalina.servlets.DefaultServletservlet-class>
	<init-param>
		<param-name>debugparam-name>
		<param-value>0param-value>
	init-param>
	<init-param>
		<param-name>listingsparam-name>
		<param-value>falseparam-value>
	init-param>
	
	<init-param>
		<param-name>readonlyparam-name>
		<param-value>falseparam-value>
	init-param>
	<load-on-startup>1load-on-startup>
servlet>

2、直接创建web工程即可,工程发布成功之后,在tomcat所在目录创建img文件夹
SpringMCV上传文件到文件服务器_第3张图片

三、测试

浏览器输入地址,测试文件服务器启动成功
SpringMCV上传文件到文件服务器_第4张图片
核心业务服务器启动成功
SpringMCV上传文件到文件服务器_第5张图片
选择一头凶猛的小狗提交文件
SpringMCV上传文件到文件服务器_第6张图片
SpringMCV上传文件到文件服务器_第7张图片
最后查看文件服务器,刚才上传的图片已经成功了。
SpringMCV上传文件到文件服务器_第8张图片

四、总结

这个例子演示了文件上传到文件服务器,并不代表真正的开发过程中就是这么实现的。实现功能的方式有很多,技术只是实现功能的一种手段,核心的内容还是思想。通过技术把优秀的思想实现,这才是核心。图片可以上传,文件也可以,参照SpringMVC操作Excel上传下载

你可能感兴趣的:(Spring,SSM文件上传,上传文件到文件服务器)