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();
}
}