java下载url图片链接
来源:互联网 发布:千县万村农村淘宝计划 编辑:程序博客网 时间:2024/06/02 06:45
1.从之前写的一篇中改写了代码,从远程的url链接中下载图片,并对各种浏览器的中文文件名进行展示
/** * 根据url路径下载图片 * @param filename 处理下载时显示设置好的中文名 eg:张三的照片.jpg * @param path 要保存在本地的临时路径(下载之后会将保存在此处的图片删除)eg: d:/image * @param url 图片链接 eg: http://photo.baidu.com/111.jpg * @param request * @param response */public static void downloadFileFromImageServer(String filename, String path, String url, HttpServletRequest request, HttpServletResponse response) {try {// 1.得到下载文件的名称.必须处理乱码.filename = GetEncode.transcode(filename);// 2.从upload目录下查找filename文件是否存在。URL httpurl = new URL(url); String fileName = IDUtil.getUUID() + url.substring(url.lastIndexOf("."));File file = new File(path + fileName); FileUtils.copyURLToFile(httpurl, file); // 下载设置// 1.设置mimetype类型String mimeType = new MimetypesFileTypeMap().getContentType(file);response.setContentType(mimeType); // 根据文件名获取这种文件的mimeType值,设置到http响应头中。// 以下代码解决了浏览器显示下载文件名乱码问题String agent = request.getHeader("User-agent");String viewfilename = null;if (agent.contains("MSIE")) {// IE浏览器viewfilename = URLEncoder.encode(filename, "utf-8");} else if (agent.contains("Firefox")) {// 火狐浏览器BASE64Encoder base64Encoder = new BASE64Encoder();viewfilename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";} else if (agent.contains("Chrome")) {// google浏览器viewfilename = URLEncoder.encode(filename, "utf-8");} else {// 其它浏览器viewfilename = URLEncoder.encode(filename, "utf-8");}// 2.设置响应头 Content-Dispositon.response.setHeader("Content-Disposition", "attachment;filename="+ viewfilename);if (file.exists()) {// 存在// 3.通过输入流将这个文件内容读取出来,通过response获取输出流,写回到浏览器.FileInputStream fis = new FileInputStream(file); OutputStream os = response.getOutputStream(); int len = -1; byte[] b = new byte[1024]; while ((len = fis.read(b)) != -1) { os.write(b, 0, len); os.flush(); } try { fis.close(); os.close();file.delete();} catch (IOException e1) { e1.printStackTrace(); } } else {// 不存在throw new RuntimeException("下载资源不存在");}}catch (UnsupportedEncodingException e) {e.printStackTrace();throw new RuntimeException("下载资源名称转码异常");}catch (FileNotFoundException e) {e.printStackTrace();throw new RuntimeException("下载资源不存在");}catch (IOException e) {e.printStackTrace();throw new RuntimeException("下载资源流异常");}}
2.用到的转码工具类
import java.io.UnsupportedEncodingException;/** * 编码解码工具类 * @author wugang * */public class GetEncode {public static String transcode(String str, String sourceCharset, String targetCharset){if (str == null) return null; String retStr = str; byte b[]; try{ b = str.getBytes(sourceCharset); for(int i=0; i < b.length; i++){ byte b1 = b[i]; if(b1 == 63) break; else if(b1 > 0) continue; else if(b1 < 0){ retStr = new String(b, targetCharset); break; } } b = retStr.getBytes(); }catch(UnsupportedEncodingException e){ e.printStackTrace(); } return retStr;}/** * 将字符串先按ISO8859-1解码,再按UTF-8编码 * @param str * @return */public static String transcode(String str){if(str == null || "".equals(str.trim()))return "";return transcode(str,"ISO8859-1", "UTF-8");}}
阅读全文
0 1
- java下载url图片链接
- 测试URL图片链接
- scrapy下载图片时,图片链接报错Missing scheme in request url: %s' % self._url
- java 下载URL图片
- 图片链接
- 图片链接
- 图片链接
- 图片链接。
- 图片链接
- 爬取豆瓣图片链接(Java)
- java:使用URL下载网页
- Java下载url文件方法
- Java根据Url下载图片
- java中URL下载资源
- java通过URL下载文件
- java根据url下载图片
- 【PHP】如何判断一个URL是否是一个图片链接
- 提取网页的图片链接的Java程序
- 线性代数1-矩阵基础
- 在博客中使用LaTeX插入数学公式
- HTML中使用Ajax进行局部刷新页面
- HTML键盘Enter(回车)事件绑定-yellowcong
- C语言(19)背包问题
- java下载url图片链接
- 选择排序,冒泡排序,排序算法实现与原理
- java 修饰符public protected default private
- TensorFlow相关的精彩问答
- Tomcat中JVM内存溢出及合理配置
- jQuery.cropper中文API详解
- Pull解析, 并添加到数据库中
- Crafts Store ---- a concurrent simulation in Java
- 枚举类型的数据序列化的时候注意事项