欢迎光临
我们一直在努力

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

本文原创首发CSDN,链接 https://blog.csdn.net/qq_41464123/article/details/105633139 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段内容,尤其是脚本之家、码神岛等平台,谢谢配合。


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

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

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

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

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

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

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

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

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


一:编写项目前台

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

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

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

<servlet> <servlet-name>FileServlet</servlet-name> <servlet-class>ypc.zwz.controller.FileDownController</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileServlet</servlet-name> <url-pattern>/file</url-pattern> </servlet-mapping> <filter> <filter-name>encodefilter</filter-name> <filter-class>ypc.zwz.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encodefilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

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

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

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


二:后台逻辑编写

首先是文字过滤器

package ypc.zwz.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } } 

重点是文件下载的JAVA类

package ypc.zwz.controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class FileDownController extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.download(request, response); } public void download( HttpServletRequest request, HttpServletResponse response) { try { String path = "C://mysql-5.5.27-win32.msi"; downCfg(System.currentTimeMillis()+".msi", request, response); OutputStream out; FileInputStream inputStream = new FileInputStream(path); out = response.getOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { out.write(buffer, 0, len); } inputStream.close(); out.close(); out.flush(); } catch (IOException e) { e.printStackTrace(); } } private void downCfg(String fileName, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { //IE或者以IE为内核的浏览器 fileName = URLEncoder.encode(fileName, "UTF-8"); } else {//非IE浏览器 fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); } response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName)); response.setContentType("application/octet-stream;charset=utf-8"); response.setCharacterEncoding("UTF-8"); } }

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

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


本文原创首发CSDN,链接 https://blog.csdn.net/qq_41464123/article/details/105633139 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段内容,尤其是脚本之家、码神岛等平台,谢谢配合。


三:部署至服务器

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

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

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

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

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

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

接着在云服务器上跑一下

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

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

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

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

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

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

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

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《把服务器当网盘玩 教你从云服务器下载自己的文件》
文章链接:https://www.456zj.com/1639.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址