您的位置:首页 > 其它

简单的网页请求图片下载

2015-09-20 15:36 357 查看
举一个简单的例子:

利用到了servlet与输入输出流的使用来实现网页图片的简单下载



package com.dp.java.servlet;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;

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

/**
* 读取资源,并下载资源
*
*/
public class ServletDom6_file extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
test2(response);
}
/**
*最简单的文件下载
*/
private void test2(HttpServletResponse response)
throws FileNotFoundException, IOException {
//得到要下载的文件
ServletContext sc=getServletContext();
String path=sc.getRealPath("/1.jpg");//根目录下的真实照片文件路径,必须通过它
System.out.println(path);//打印路径
//截取文件名
String filename=path.substring(path.lastIndexOf("\\")+1);
System.out.println(filename);
//构建输入流
InputStream in=new FileInputStream(path);
//通知客户端的形式打开
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename, "UTF-8"));
response.setHeader("Content-Type", "application/octet-stream");
//得到输出流
OutputStream out=response.getOutputStream();
int len=-1;
byte b[]=new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
}

private String URLEncoder(String filename, String string) {
// TODO Auto-generated method stub
return null;
}
/**
*最简单的文件下载
*/
private void test1(HttpServletResponse response)
throws FileNotFoundException, IOException {
//得到要下载的文件
ServletContext sc=getServletContext();
String path=sc.getRealPath("/1.jpg");//根目录下的照片
System.out.println(path);//打印路径
//构建输入流
InputStream in=new FileInputStream(path);
//通知客户端的形式打开
response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
response.setHeader("Content-Type", "application/octet-stream");
//得到输出流
OutputStream out=response.getOutputStream();
int len=-1;
byte b[]=new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
}

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

}


xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>day6_servlet</display-name>

<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletDom6_file</servlet-name>
<servlet-class>com.dp.java.servlet.ServletDom6_file</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ServletDom6_file</servlet-name>
<url-pattern>/servlet/ServletDom6_file</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


当服务器tomcate发布后,然后再网址上输入http://localhost:8080/项目名//servlet/ServletDom6_file(这个也就是xml文件的<url-pattern>)

效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: