原创

根据图片地址读取图片文件

/**    
 * @Title: ImageController.java  
 * @Description: TODO 
 * @author zhangyd-c  
 * @date 2015年8月18日 下午1:04:15  
 * @version 1.0  
 */  

package com.gcj.controller;  

import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  

import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  

/** 
 * 
 * @Description 
 * @author (作者) zhangyd-c 
 * @date (开发日期) 2015年8月18日 下午1:04:15 
 * @version (版本) V1.0 
 * @since (该版本支持的JDK版本) : 1.7 
 * @modify (修改) 
 *  
 * @Review (审核人) 
 */  
@Controller  
@RequestMapping("/image")  
public class ImageController {  

    /** 
     * 根据头像地址,读取头像文件 
     *  
     * @param request 
     * @param response 
     * @param path 
     * @author zhangyd-c 
     * @date 2015年5月28日 上午9:21:02 
     * @return void 
     * @throws 
     */  
    @RequestMapping("/getUserAvatar")  
    public void getUserLogo(HttpServletRequest request, HttpServletResponse response, String path) {  
        File file = new File(path); // 括号里参数为文件图片路径  
        if (!file.exists()) { // 如果文件不存在,则使用默认的图片  
            path = request.getSession().getServletContext().getRealPath("/") + "assets/img/gallery/image2.jpg";// 可指定项目内的任意图片文件  
            file = new File(path); // 括号里参数为文件图片路径  
        }  
        readyImage(response, file);  
    }  

    /** 
     * 读取文件 
     *  
     * @Description 
     * @author zhangyd-c 
     * @date 2015年10月10日 下午2:01:49 
     * @param response 
     * @param file 
     */  
    public void readyImage(HttpServletResponse response, File file) {  
        response.setContentType("image/jpeg"); // 设置返回内容格式  
        InputStream in = null;  
        OutputStream os = null;  
        try {  
            in = new FileInputStream(file);  
            os = response.getOutputStream(); // 创建输出流  
            byte[] b = new byte[1024];  
            while (in.read(b) != -1) {  
                os.write(b);  
            }  
            os.flush();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (in != null) {  
                    in.close();  
                }  
                if (os != null) {  
                    os.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  

        }  
    }  

}

应用场景:

  1. 上传头像后根据头像地址读取头像文件用于前台显示
  2. 图片预览

注,该文章,迁移自我的iteye博客,原文地址:https://843977358.iteye.com/blog/2251970

正文到此结束