文件下载示例

1.获得文件路径,得到文件名

2.告诉浏览器要下载文件和下载文件的格式

3.response获得输出流,输出文件

response.getWriter()示例

package com.learning.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;

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

/**
 * Servlet implementation class DownLoadServlet
 */
@WebServlet("/servlet/downLoadServlet")
public class DownLoadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //文件下载

        //要下载的文件名
        String filename="123.txt";
        //设置文件名的编码
        if(request.getHeader("user-agent").toLowerCase().contains("msie")){
            filename = URLEncoder.encode(filename, "UTF-8");//将不安全的文件名改为UTF-8格式
        }else{
            filename = new String(filename.getBytes("UTF-8"),"iso-8859-1");//火狐浏览器
        }

        //告诉浏览器要下载文件
        response.setHeader("content-disposition", "attachment;filename="+filename);
        //告诉浏览器要下载的文件格式
        response.setContentType(this.getServletContext().getMimeType(filename));

        //获得输出流
        PrintWriter out = response.getWriter();
        out.write("tom,123 \n");
        out.write("jerry,123 \n");
        out.write("john,123 \n");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

下载图片示例:

/**
 *
 */
package com.learning.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;

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

/**
 * @author 杰
 *
 */
public class ServletDemo1 extends HttpServlet {

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

        //先获得文件的路径
        String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/美女.jpg");
        //通过文件流来读取文件
        FileInputStream fileInputStream=new FileInputStream(new File(realPath));
        //获取文件名
        String filename=realPath.substring(realPath.lastIndexOf("/")+1);
        //设置文件名的编码
        if(request.getHeader("user-agent").toLowerCase().contains("msie")){
            filename = URLEncoder.encode(filename, "UTF-8");//将不安全的文件名改为UTF-8格式
        }else{
            filename = new String(filename.getBytes("UTF-8"),"iso-8859-1");//火狐浏览器
        }

        //告诉浏览器要下载文件
        response.setHeader("content-disposition","attachment;filename="+filename);
        //告诉浏览器文件的格式
        response.setContentType(this.getServletContext().getMimeType(filename));
        //输出文件
        ServletOutputStream outputStream = response.getOutputStream();

        int len=1;
        byte[] b=new byte[1024];
        while ((len=fileInputStream.read(b))!=-1) {
            outputStream.write(b, 0, len);
        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
时间: 2024-11-05 23:04:48

文件下载示例的相关文章

PHP文件下载示例

<?php header("Content-type:text/html;charset=utf-8"); // $file_name="cookie.jpg"; $file_name="3D.exe"; //用以解决中文不能显示出来的问题 $file_name=iconv("utf-8","gb2312",$file_name); $file_sub_path=$_SERVER['DOCUMENT_

iOS开发 -文件下载(1不合理)

iOS开发网络篇—文件下载(一·不合理) 一.小文件下载 如果文件比较小,下载方式会比较多 直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url; 利?NSURLConnection发送一个HTTP请求去下载 如果是下载图片,还可以利用SDWebImage框架 二.沙盒 1.在finder中,系统的一些文件(资源库)是隐藏的,可以通过在终端运行下图的代码,显示隐藏的文件. 显示隐藏系统文件: defaults write com.apple.fin

iOS开发网络篇—文件下载(一&#183;不合理)

iOS开发网络篇—文件下载(一·不合理) 一.小文件下载 如果文件比较小,下载方式会比较多 直接用NSData的+ (id)dataWithContentsOfURL:(NSURL *)url; 利?NSURLConnection发送一个HTTP请求去下载 如果是下载图片,还可以利用SDWebImage框架 二.沙盒 1.在finder中,系统的一些文件(资源库)是隐藏的,可以通过在终端运行下图的代码,显示隐藏的文件. 显示隐藏系统文件: defaults write com.apple.fin

Struts2笔记--文件下载

Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的.配置stream类型的结果需要指定以下4个属性. contentType:指定被下载文件的文件类型 inputName:指定被下载文件的入口输入流 contentDisposition:指定下载的文件名 bufferSize:指定下载文件时的缓冲大小 struts2文件下载示例: 1.处理文件下载的Action: /** * Description:Struts2控制文件下载 * Author: Eleven *

iOS开发系列--网络开发

iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 50097 阅读, 53 评论, 收藏,  编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession

转:java服务器安全指南

转: http://drops.wooyun.org/web/16609 JAVA安全之JAVA服务器安全漫谈 z_zz_zzz · 2016/06/08 10:50 0x00 前言 本文主要针对JAVA服务器常见的危害较大的安全问题的成因与防护进行分析,主要为了交流和抛砖引玉. 0x01 任意文件下载 示例 以下为任意文件下载漏洞的示例. DownloadAction为用于下载文件的servlet. 1 2 3 4 5 6 7 8 9 10 11 <servlet>     <desc

Java网络编程技术1

1. Java网络编程常用API 1.1 InetAddress类使用示例 1.1.1根据域名查找IP地址 获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地址.当然,程序运行时,需要计算机正常连接到Internet上. 例1. 根据域名查找IP地址 package Net; import java.net.InetAddress; import java.net.UnknownHostException; public class GetIP { pu

IOS网络开发概述

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

iOS开发系列--网络开发网络联网程序

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理