图片下载

servlet:图片下载

例题一

package com.taxue.servletday03;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 	下载图片
 * http://127.0.0.1:8080/servlet/downjpg
 *  <url-pattern>/downjpg</url-pattern>
 *
 */
public class DownJpg extends HttpServlet {

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

		 doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("墙壁.jpg","utf-8"));
		InputStream  in = new FileInputStream(this.getServletContext().getRealPath("1.jpg"));
		OutputStream out = response.getOutputStream();
		byte[] bs = new byte[1024];
		int i = 0;
		while ((i=in.read(bs)) != -1){
			 out.write(bs, 0, i);
		}
		in.close();
	 
	}
}

例题二

注:有缺陷谷歌中文没有乱码,火狐用乱码

<span style="white-space:pre">	</span>/**
	 * 下载图片
	 * @param codename	远程图片名称
	 * @param codeurl	远程图片url
	 * @author wqk
	 * @param request
	 * @param response
	 * @throws UnsupportedEncodingException 
	 */
	@RequestMapping("downloadUrlJpg")
	public static void downloadUrlJpg(String codename, String codeurl,
			HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("application/x-download");
		if (codeurl != null) {
			String filename = codename + ".jpg";
			try {
				URL	url = new URL(codeurl);
				HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection();
				httpUrl.connect();
				//URLEncoder.encode(filename, "UTF-8");
				response.addHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename, "utf-8"));
				InputStream inStream = httpUrl.getInputStream();
			//	BufferedInputStream	bis = new BufferedInputStream(inStream);
				OutputStream fos = response.getOutputStream();
				BufferedOutputStream oStream = new BufferedOutputStream(fos);
				byte[] b = new byte[1024];
				int i = 0;
				while ((i = inStream.read(b)) > 0) {
					oStream.write(b, 0, i);
				}
				oStream.flush();oStream.close();inStream.close();
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}
	}

事例三

/**
	 * 下载图片
	 * @param codename	远程图片名称
	 * @param codeurl	远程图片url
	 * @param request
	 * @param response
	 * @author wangqiankun
	 * @throws IOException 
	 */
	@RequestMapping("downloadUrlJpg")
	public static void downloadUrlJpg(String codename, String codeurl,
			HttpServletRequest request, HttpServletResponse response) throws IOException {
		response.setContentType("application/x-download");
		request.setCharacterEncoding("utf-8");
		String filename =null;
		if (codeurl != null) {
			 String UserAgent = request.getHeader("USER-AGENT").toLowerCase();
			 if(UserAgent.indexOf("firefox") >= 0){
				 filename	 = new String(codename.getBytes("UTF-8"),"iso-8859-1")+".jpg";
				 response.addHeader("Content-Disposition","attachment;filename=" + filename);
			 }else{
				  filename= URLEncoder.encode(codename, "utf-8")+".jpg";
				  response.addHeader("Content-Disposition","attachment;filename="+ filename); 
			 }
				URL	url = new URL(codeurl);
				HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection();
				httpUrl.connect();
				InputStream inStream = httpUrl.getInputStream();
				OutputStream fos = response.getOutputStream();
				BufferedOutputStream oStream = new BufferedOutputStream(fos);
				byte[] b = new byte[1024];
				int i = 0;
				while ((i = inStream.read(b)) > 0) {
					oStream.write(b, 0, i);
				}
				oStream.flush();
		}
	}
	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值