`

下载图片 后台要做的部分

    博客分类:
  • java
 
阅读更多

servlet 实现下载图片

 

package Servlets;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.*;

public class CouponDownload extends HttpServlet {
 public void doGet(HttpServletRequest request,HttpServletResponse response){
  try{
   String fname = "coupon_all.jpg";
   response.setCharacterEncoding("utf-8");
   fname = java.net.URLEncoder.encode(fname, "UTF-8");
   response.setHeader("Content-Disposition", "attachment;filename="+fname);
   response.setContentType("image/jpeg");//定义输出类型
   
  }catch (Exception e){
   System.out.println(e);
  }
 }
 public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws IOException, ServletException{
   doGet(request,response);
  }
}
//没有预览 - 看到最后面,我提供了个完全正常的。

 

Servlet实现将图片写入到网页和实现图片下载的功能

 

package donghongyujava.servlet;
 
import java.io.File;
 
public class ShowImage extends HttpServlet {
 
    /**
     * Constructor of the object.
     */
    public ShowImage() {
        super();
    }
 
    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
//      showImage(request, response);
        downlodeImage(request, response);
    }
 
    public void showImage(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // 读取方式
        // response.setContentType("application/zip");
        response.setContentType("image/jpeg");
        // 获取图片绝对路径
        String path = this.getServletContext().getRealPath("/");
        File file = new File(path + "/images/WIN_20131027_214421.JPG");
        // 创建文件输入流
        FileInputStream is = new FileInputStream(file);
        // 响应输出流
        ServletOutputStream out = response.getOutputStream();
        // 创建缓冲区
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = is.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        is.close();
        out.flush();
        out.close();
 
    }
 
    public void downlodeImage(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
         
        // 获取图片绝对路径
        String path = this.getServletContext().getRealPath("/");
        File file = new File(path + "/images/WIN_20131027_214421.JPG");
        //设置头信息,内容处理的方式,attachment以附件的形式打开,就是进行下载,并设置下载文件的命名
        response.setHeader("Content-Disposition","attachment;filename="+file.getName());
        // 创建文件输入流
        FileInputStream is = new FileInputStream(file);
        // 响应输出流
        ServletOutputStream out = response.getOutputStream();
        // 创建缓冲区
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = is.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        is.close();
        out.flush();
        out.close();
 
    }
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        this.doGet(request, response);
    }
 
}

 

如果要实现下载网络上用URL指定的图片呢:

 

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;


public class DynamicGetURLImage {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			//图片的http全路径
			String imgurl = "http://xxx:8080/xxx/seccode.php?update=6689";
			
			URL url = new URL(imgurl);
			
			BufferedInputStream  in = new BufferedInputStream(url.openStream());
			
                       //保存的图片文件名
			File img = new File("img.jpg");
			
			BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(img));
			
			byte[] buf = new byte[2048];
			
			while(in.read(buf) != -1)
			{
				out.write(buf);
			}
			
			in.close();
			out.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}


 

 最终代码:

package com.hwm.shown.servlet;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URLConnection;
import java.util.Date;

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

/**
 * Servlet implementation class downloadImage
 */
@WebServlet("/downloadImage")
public class downloadImage extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public downloadImage() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		/**
		 *  
		 */
		response.setCharacterEncoding("utf-8");
		URI uri = null;
        URLConnection connection = null;// 获取URLConnection对象
        BufferedInputStream in = null;
        ByteArrayOutputStream out = null;
        String url=request.getParameter("url");
        String houzui=url.substring(url.lastIndexOf("."), url.length());
//        System.out.println(houzui);
//        System.out.println(new Date().getTime());
        if(url!=null){
        	try {
                uri = new URI(url);// 创建URI对象
                connection = uri.toURL().openConnection();
                in = new BufferedInputStream(connection.getInputStream());
                out = new ByteArrayOutputStream();

                byte[] buffer = new byte[in.available()];//1024
                int len;

                while ((len = in.read(buffer)) != -1) {
                    out.write(buffer, 0, len);
                }

                byte[] data = out.toByteArray(); //! 一定要先转换成字节数组
                out.close();
             // 这里进行你想要的其他操作
                response.setHeader("Content-Disposition", "attachment;filename="+Long.toString(new Date().getTime())+houzui  );
//                response.setContentType("image/jpeg");//定义输出类型 可不设置
                // 响应输出流  
                ServletOutputStream out2 = response.getOutputStream();  
                out2.write(data, 0, data.length); 
                
                in.close();  
                out2.flush();  
                out2.close(); 
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {}
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {}
                }
            }
        }
	}

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

}

 测试例子: http://localhost:8080/test1/downloadImage?url=http://cdn.iknow.bdimg.com/static/common/pkg/common_z_63fa369.png

分享到:
评论

相关推荐

    是关于后台管理图片下载

    图片下载功能是后台管理中的一个重要模块,它允许管理员高效地上传、管理和下载与系统相关的图像资源。本篇文章将深入探讨后台管理图片下载的实现原理、常见问题及其解决方案。 首先,后台管理图片下载通常涉及到...

    echarts 保存图片到后台下载

    ### ECharts保存图片至后台并下载的技术解析 #### 前言 在现代Web开发中,数据可视化变得越来越重要,而ECharts作为一款强大的图表库,因其丰富的图表类型和高度可定制化的特性,在数据可视化领域得到了广泛的应用...

    图片资源后台加载

    后台下载图片常用于用户保存图片或批量下载功能,通过后台线程执行,不影响用户对应用的正常使用。 综上所述,"图片资源后台加载"是一种优化应用性能和用户体验的关键技术,通过合理利用如Android-Universal-Image-...

    后台UI源文件效果预览图片 下载(图片资源)

    这个压缩包文件名为"后台UI源文件效果预览图片 下载(图片资源)",提供了若干预览图片,主要针对后台界面的视觉效果展示,用于帮助开发者、设计师或相关人员了解和评估设计样式和布局。描述中提到“最新,登录”,...

    超赞的后台管理模板下部分

    在压缩包内的文件列表中,虽然只列出了“超赞的后台管理模板下部分”这一项,但通常这样的资源会包含HTML文件(用于结构)、CSS文件(用于样式)、JavaScript文件(包括jQuery和其他功能脚本)以及可能的图片或字体...

    超赞的后台模板上部分

    "超赞的后台模板上部分" 就是一个专为后台管理设计的界面模板,其主要特点在于分成了上下两个部分,使用者需要同时下载上部分和下部分,并将它们合并后才能正常使用。 首先,我们要关注的是模板所使用的技术——...

    PHPCMS后台模板 美化PHPCMS后台

    这些文件和目录都是PHPCMS后台模板的重要组成部分: 1. **admin.php** - 这个文件通常是后台的入口文件,它负责处理管理员登录、权限验证以及跳转到后台首页等功能。修改这个文件可能会涉及到登录界面的样式调整...

    解决网页后台图片不显示

    首先,我们要理解网页中图片无法显示的常见原因: 1. **URL问题**:图片的URL是否正确?确保图片链接没有拼写错误,且图片文件存在于服务器的指定路径下。如果图片是相对路径,检查其相对于HTML文件的位置是否正确...

    很多漂亮的后台html源码

    开发人员可以下载这些源码,根据实际需求进行定制和修改,快速搭建起符合自己项目需求的后台系统。这些模板对于快速原型开发或者初创项目尤其有用,能够节省大量的设计和编码时间。 总的来说,“很多漂亮的后台html...

    ThinkPHP完美后台模板

    "ThinkPHP完美后台模板"是一款基于ThinkPHP框架的高级网页设计模板,专为构建功能丰富的后台管理系统而设计。它能够满足各种类型的应用场景,包括社交网络(SNS)、电子商务平台和企业网站等。该模板充分利用了...

    【站长亲测】素材源码资源下载站源码,带用户中心和VIP充值系统,后台管理+素材下载+积分金币下载

    本资源是一款专为素材和源码下载而设计的网站源码,基于织梦内容管理系统(DEDECMS)进行开发,具备用户中心、VIP充值系统、后台管理以及积分金币下载等功能,旨在提供一个全面且易操作的平台,方便用户获取和分享...

    后台界面模板下载大气好看可用各类程序

    【后台界面模板】是网页设计中的一个重要组成部分,主要用于构建网站管理系统的用户界面。这些模板通常包含了一系列预设计的布局、颜色方案、图标、导航结构等元素,为开发者提供了一个快速搭建后台系统的框架,大大...

    自己做的管理后台模版

    "标签"部分列出了"管理"、"系统"、"后台"、"模版"、"模板",这些关键词进一步强调了这个模板的用途和性质,它是为后台管理系统设计的,可以用于数据管理、用户管理、权限控制等各种管理任务。 在压缩包中的文件名...

    后台网页模板

    通常,后台模板会包括以下几部分: 1. **HTML文件**:包含各个页面的结构,如登录页、仪表盘、用户管理页等,使用HTML5语义化标签编写。 2. **CSS文件**:定义样式,使后台界面保持一致的视觉效果,包括颜色、字体...

    GM后台【支持邮件】_剑魂后台源码_

    总的来说,剑魂后台的邮件功能源码是游戏后台管理系统中的一个重要组成部分,它通过细致的设计和有效的实现,确保了游戏与玩家之间的信息传递流畅、准确,提升了整体运营效率和服务质量。对于开发者和运维人员而言,...

    后台模板26个、多种样式、部分有动态

    后台模板是Web开发中不可或缺的一部分,它们为开发者提供了一个快速构建管理界面的基础框架。这些模板通常包含各种页面布局、组件和样式,以满足不同后台应用的需求。本压缩包集合了26个不同的后台模板,每一种都有...

    一款漂亮的后台模板HTML

    【描述】"非常漂亮的一套后台模板是HTML格式的 可以自己根据需要更改哦"这部分暗示了模板的可定制性。HTML模板是预设计好的网页布局,可以快速用于创建一致的后台管理界面,节省开发者的时间。它们通常包含CSS...

    oss下载(断点续传,后台显示进度)源代码.rar

    2. **断点续传机制**:断点续传技术是通过保存已下载部分的信息,包括已下载的文件大小和文件的校验值,来实现的。在下载中断后,程序会根据这些信息找到上次的结束点,然后从该位置继续下载。在阿里云OSS SDK中,这...

    微信小程序-图片展示(完整带后台)小程序源码

    在这个“微信小程序-图片展示(完整带后台)小程序源码”项目中,我们将深入探讨如何利用微信小程序开发一个图片展示应用,并且该应用还配备了一个完整的后台管理系统。 首先,我们需要了解微信小程序的基本结构和...

    后台管理图片

    综上所述,"后台管理图片"涉及的技术点涵盖了前端界面设计、后端处理逻辑、图片存储与访问、安全性和性能优化等多个方面,这些都是构建高效、易用的后台管理系统不可或缺的部分。通过阅读提供的博客文章,可以深入...

Global site tag (gtag.js) - Google Analytics