把服务器当网盘玩 教你从云服务器下载自己的文件

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 把服务器当网盘玩 教你从云服务器下载自己的文件

首先,我们来了解一下,什么是云服务器:

云服务器(Elastic Compute Service, ECS)是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台云服务器

云服务器帮助您快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本,使您能够更专注于核心业务的创新。

接着,网盘大家就不陌生了吧?网盘就是可以存放数据的虚拟盘。网盘定义是这样的:

网盘,又称网络U盘、网络硬盘,是由互联网公司推出的在线存储服务。服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储、访问、备份、共享等文件管理等功能,并且拥有高级的世界各地的容灾备份。用户可以把网盘看成一个放在网络上的硬盘或U盘,不管你是在家中、单位或其它任何地方,只要你连接到因特网,你就可以管理、编辑网盘里的文件。不需要随身携带,更不怕丢失。

对于我们学生而言,云服务器的价格还是比较低廉的。获取很多小伙伴都已经接触过云服务器,那么我们买了云服务器之后,能做一些什么呢?

搭建自己的博客就不说了,我们还可以部署自己写的项目到云服务器,然后外网就可以访问到我们的项目了。

接下来我们介绍一个新玩法——把服务器当网盘玩,即从自己的云服务器下载指定的文件

哈哈哈花里胡哨 ,也算是最近我在研究的事情吧。


一:编写项目前台

 

在前台的JSP页面,我们只需要一行代码,就可以实现超链接下载

<a href="file">mysql下载</a>

接着是web.xml部署配置文件:

1. <servlet>
2. <servlet-name>FileServlet</servlet-name>
3. <servlet-class>ypc.zwz.controller.FileDownController</servlet-class>
4. </servlet>
5. <servlet-mapping>
6. <servlet-name>FileServlet</servlet-name>
7. <url-pattern>/file</url-pattern>
8. </servlet-mapping>
9. 
10. <filter>
11. <filter-name>encodefilter</filter-name>
12. <filter-class>ypc.zwz.filter.EncodingFilter</filter-class>
13. </filter>
14. <filter-mapping>
15. <filter-name>encodefilter</filter-name>
16. <url-pattern>/*</url-pattern>
17. </filter-mapping>
18. <welcome-file-list>
19. <welcome-file>index.jsp</welcome-file>
20. </welcome-file-list>

前台JSP页面的超链接‘file’,被servlet这个服务器连接器所映射,对应到FileServlet这个servlet,然后到了ypc.zwz.controller.FileDownController这个Java文件中,进行后台的逻辑处理。(上方前8行代码)

encodefilter文字编码过滤器,使用他可以保证中文正常显示。

最后的welcome-file-list就是首页,即运行项目就打开的页面。

 


二:后台逻辑编写

首先是文字过滤器

1. package ypc.zwz.filter;
2. 
3. import java.io.IOException;
4. 
5. import javax.servlet.Filter;
6. import javax.servlet.FilterChain;
7. import javax.servlet.FilterConfig;
8. import javax.servlet.ServletException;
9. import javax.servlet.ServletRequest;
10. import javax.servlet.ServletResponse;
11. 
12. public class EncodingFilter implements Filter {
13. 
14.   public void destroy() {
15.   }
16. 
17.   public void doFilter(ServletRequest request, ServletResponse response,
18.       FilterChain chain) throws IOException, ServletException {
19.     request.setCharacterEncoding("utf-8");
20.     response.setCharacterEncoding("utf-8");
21.     chain.doFilter(request, response);
22.   }
23. 
24.   public void init(FilterConfig filterConfig) throws ServletException {
25.   }
26. 
27. }

重点是文件下载的JAVA类

1. package ypc.zwz.controller;
2. 
3. import javax.servlet.ServletException;
4. import javax.servlet.http.HttpServlet;
5. import javax.servlet.http.HttpServletRequest;
6. import javax.servlet.http.HttpServletResponse;
7. import java.io.FileInputStream;
8. import java.io.IOException;
9. import java.io.OutputStream;
10. import java.io.UnsupportedEncodingException;
11. import java.net.URLEncoder;
12. 
13. public class FileDownController extends HttpServlet{
14. 
15.   private static final long serialVersionUID = 1L;
16. 
17.   public void doGet(HttpServletRequest request, HttpServletResponse response)
18.       throws ServletException, IOException {
19. this.doPost(request, response);
20.   }
21. 
22.   public void doPost(HttpServletRequest request, HttpServletResponse response)
23.       throws ServletException, IOException {
24.     this.download(request, response);
25.   }
26. 
27.   public void download( HttpServletRequest request, HttpServletResponse response) {
28. try {
29. String path = "C://mysql-5.5.27-win32.msi";
30.             downCfg(System.currentTimeMillis()+".msi", request, response);
31.             OutputStream out;
32. FileInputStream inputStream = new FileInputStream(path);
33.             out = response.getOutputStream();
34. byte[] buffer = new byte[1024];
35. int len;
36. while ((len = inputStream.read(buffer)) != -1) {
37.                 out.write(buffer, 0, len);
38.             }
39.             inputStream.close();
40.             out.close();
41.             out.flush();
42.         } catch (IOException e) {
43.             e.printStackTrace();
44.         }
45.     }
46. private void downCfg(String fileName, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
47. String userAgent = request.getHeader("User-Agent");
48. if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { //IE或者以IE为内核的浏览器
49.             fileName = URLEncoder.encode(fileName, "UTF-8");
50.         } else {//非IE浏览器
51.             fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
52.         }
53.         response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName));
54.         response.setContentType("application/octet-stream;charset=utf-8");
55.         response.setCharacterEncoding("UTF-8");
56.     }
57. }

当我们在前台JSP页面读到ypc.zwz.controller.FileDownController这个Java文件,会运行doGet()方法,其中doGet()又调用了doPost()方法,doPost()方法又调用了download()方法。

我们只需要更改path这一个String变量即可,即你需要下载的文件,在你云服务器上的路径即可,比如我选择的是mysql的安装包。


三:部署至服务器

项目编写好之后,我们需要配置一下Tomcat,我这里以eclipse为例,其他IDE同理,找到Tomcat打开设置即可。

如果上面第二步是灰的(无法更改),我们只需要停止正在运行的Tomcat,清除掉加进去的项目(右击Tomcat,选择Add and Remove),就变成可以更改的状态。

为什么要修改呢?因为部分IDE默认是在工作目录下的Servers目录下进行部署的,而我们需要把项目部署在Tomcat目录下的webapps下,所以需要更改。

我们先使用IDE启动一次项目,即把项目部署到Tomcat的webapp目录下,然后打开Tomcat目录下的bin文件夹,打开Tomcat85w.exe(不同版本文件名不同),启动。

接着在云服务器上跑一下

接下来,我们在外网浏览器输入服务器公网IP + 项目名

我们点击mysql下载这一个超链接,浏览器就会给我们下载到指定的文件。

那么,我们就实现了从自己的云服务器,下载自己指定的文件,这一个功能。

本项目完整代码已经附上,欢迎使用!


相关实践学习
基于ECS搭建FTP服务
本教程介绍如何在Linux实例上安装并配置vsftpd,在被动模式下,使用本地用户访问FTP服务器的配置方法。。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
弹性计算 搜索推荐 异构计算
阿里云服务器多少钱一年?亲自整理ECS、轻量和GPU服务器租赁价格表
2025年阿里云服务器优惠汇总:轻量应用服务器2核2G 38元/年起,ECS 2核2G 99元/年,2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量25元/月起,新老用户同享,续费同价。
1583 158
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
452 10
|
5月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
378 2
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
在阿里云当下的活动中,38元/年的轻量应用服务器与99元/年的云服务器ECS成为众多新用户的关注焦点。但是有部分用户并不是很清楚二者之间的区别,因此就不知道应该如何选择。接下来,笔者将为您详细剖析ECS云服务器与轻量应用服务器的差异,以供您参考和选择。
574 4
阿里云轻量应用服务器38元1年和云服务器99元1年怎么选?二者性能区别及选择参考
|
5月前
|
弹性计算 搜索推荐 异构计算
租用阿里云服务器一年要多少钱?ECS、轻量和GPU服务器租赁价格,手动整理
2025年10月阿里云服务器优惠持续,轻量应用服务器200M带宽38元起/年,ECS 2核2G 99元/年、2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量25元/月起,新老同享,续费不涨价。
1168 2
|
弹性计算 Ubuntu 应用服务中间件
ecs 服务器的初次使用
大一期间,在老师的指导下逐渐了解熟悉并运用ECS服务器
ecs 服务器的初次使用
|
弹性计算 负载均衡 Ubuntu
|
5月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
612 8
|
5月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。