文件的下载(静态下载和动态下载)

建立一个Servlet类:FiledownloadServlet;

package com.lanqiao.javaweb.filedownloadservlet;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLClassLoader;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sun.net.URLCanonicalizer;

public class FiledownloadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //response.setContentType("application/x-msdownload"):
        //即设置一个响应的类型: application/x-msdownload
        //通知客户端浏览器: 这是一个需要下载的文件, 不能再按普通的 html 的方式打开.
        response.setContentType("application/x-msdownload");

        //response.setHeader("Content-Disposition", "attachment;filename=abc.txt");
        //设置用户处理的方式: 响应头: Content-Disposition
        //通知客户端浏览器: 不再有浏览器来处理该文件, 而是交由用户自行处理

        //.txt为下载文件的类型,必须与后面downloadFileName的类型相同;
        String fileName="文件下载.txt";

        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));

        //读取进来然后下载;

        OutputStream out=response.getOutputStream();
        //所读取文件的地址,及类型
        String downloadFileName="C:\\hh.txt";

        //读取要下载的文件
        InputStream in=new FileInputStream(downloadFileName);

        byte[] buffer=new byte[1024];
        int len=0;
        while((len=in.read(buffer))!=-1){
            out.write(buffer, 0, len);
        }

        in.close();
    }

}

web.xml文件:

<servlet>
    <description></description>
    <display-name>FiledownloadServlet</display-name>
    <servlet-name>FiledownloadServlet</servlet-name>
    <servlet-class>com.lanqiao.javaweb.filedownloadservlet.FiledownloadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FiledownloadServlet</servlet-name>
    <url-pattern>/filedownloadServlet</url-pattern>
  </servlet-mapping>

download.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <!-- 静态下载 -->
    <a href="xyz.txt">download xyz.txt</a>

    <br><br>

    <a href="test.jsp">download test.jsp</a>

    <br><br>
    <!-- 动态下载 -->
    <a href="filedownloadServlet">Download To File</a>

</body>
</html>
时间: 2024-08-02 19:50:40

文件的下载(静态下载和动态下载)的相关文章

Struts2实现文件的上传与动态下载功能。

本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class FileBag implements java.io.Serializable {     // Fields     private Integer id;   //Id编号     privat

(转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦

引言: 在使用 Unity3d 开发微端.或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼动画的时候走的一些弯路和自己最后的解决方式. 我们的项目中的动画资源有上百套之多,每一套动画大概在300KB 到 900KB 之前,所以有一个非常重要的需求就是动态的下载须要的动画. 错误的方法: 我看到需求后想到的第一种方法是将 FBX 倒入的 Prefab 实例化,将当中的 Animation

Android网络编程之——文件断点下载(暂停/继续/重新下载)

开头还是不说废话了直接进入主题吧! 一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connection = null; //设置下载请求属性 connection.setRequestProperty(); 3.RandomAccessFile 对文件进行写入 RandomAccessFile rwd = null; //从文件的某一位置写入 rwd.seek

使用CoreText动态下载更换字体

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #d12f1b } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }

ios字体动态下载

一.IOS字体 动态下载字体,不仅可以减少APP包的大小,而且字体在iOS系统中是公共的,可共用的.所以如果自己用到的字体已经下载字体,就不用再次下载.还有就是系统提供的字体是iOS维护的.如果用到第三方字体,不仅字体大小对流量.包大小有影响,而且会有版权等的诸多限制.真机下载后的字体路径是在 file:///private/var/MobileAsset/Assets/com_apple_MobileAsset_Font2/25eb7390708d494864eef0905635e1dc3f2

putty windows上传文件到linux服务器 &amp; 从linux服务器 下载文件到 windows

从putty官网下载putty软件:putty.exepscp.exepsftp.exe等软件 也可以自己下windows安装包putty-0.63-installer.exe 本人直接下载putty-0.63-installer.exe安装包了,然后直接安装 使用pscp方式从windows上传文件到linux服务器 在CMD命令行中进入到putty安装目录 输入pscp 回车 pscp 跟我们平时使用的linux scp命令操作的都是类似的 现在我直接从windows本地上传一个文件到lin

将一个文件作为下载的形式打开【下载文件】,添加报文头context.Response.AddHeader(&quot;Content-disposition&quot;, &quot;attachment; filename=&quot;

<1> HTMLPage1.htm页 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <a href="下载Handler1.ashx">下载</a> </body> </html> 下载Handler1.ashx.cs

一般 -- 动态下载组件

摘要:一般 -- 动态下载组件 http://msdn.microsoft.com/zh-tw/library/system.windows.assemblypart(VS.95).aspx 原文:大专栏  一般 -- 动态下载组件 原文地址:https://www.cnblogs.com/chinatrump/p/11496815.html

【Java EE 学习第22天 文件下载】【单线程下载】【单线程断点下载】【多线程下载】

一.文件下载简述 1.使用浏览器从网页上下载文件,Servlet需要增加一些响应头信息 (1)response.setContentType("application/force-download"); (2)response.setContentLength(fis.available()); (3)response.setHeader("Content-Disposition","attachment;filename="+filename)