springmvc后台获取图片,到jsp页面显示

本文介绍了一种在JSP页面中动态加载图片的方法,并详细解释了前后端代码实现细节。通过JavaScript设置img标签的src属性,从后端Controller获取图片的二进制流并返回给前端显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,jsp页面,img的url动态设定

<img id='bomimg' alt="" > 

$("#bomimg").attr("src", basepath+"biz/itemmanager/bizitembomimg/getBomImg/" + node.id);

2,后台,

需要引入jar包


代码段

<span style="white-space:pre">	</span>/**
	 * 获取图片
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/biz/itemmanager/bizitembomimg/getBomImg/{itemCode}", method = RequestMethod.GET)
	public ResponseEntity<byte[]>
	 getBomImg(HttpServletRequest request,HttpServletResponse response,@PathVariable String itemCode) {
		HttpHeaders he = new HttpHeaders();
		byte[] picture =  bizitembomimgService.getImg(itemCode);
		try {
			FileType imgType = FileTypeUtil.getType(picture);
			switch(imgType.name()){
				case "PNG":
					he.setContentType(MediaType.IMAGE_PNG);
					break;
				case "JPG":
					he.setContentType(MediaType.IMAGE_JPEG);
					break;
				case "JPEG":
					he.setContentType(MediaType.IMAGE_JPEG);
					break;
				case "GIF":
					he.setContentType(MediaType.IMAGE_GIF);
					break;
				case "BMP":
					he.setContentType(MediaType.valueOf("image/bmp"));
					break;
				default:
					he.setContentType(MediaType.IMAGE_JPEG);
					break;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<>(picture,he,HttpStatus.OK);
	}
附: 根据二进制文件流获取文件类型工具类
package com.comprehensive.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 根据二进制文件流获取文件类型
 * 
 * @author Hou
 *
 */
public class FileTypeUtil {

	/**
	 * 文件头类型
	 * 
	 * @author Hou
	 *
	 *         常见文件头类型
	 * 
	 *  <pre>
    FFD8FFFE00, .JPEG;.JPE;.JPG, "JPG Graphic File"
    FFD8FFE000, .JPEG;.JPE;.JPG, "JPG Graphic File"
    474946383961, .gif, "GIF 89A"
    474946383761, .gif, "GIF 87A"
    424D, .bmp, "Windows Bitmap"
    4D5A, .exe;.com;.386;.ax;.acm;.sys;.dll;.drv;.flt;.fon;.ocx;.scr;.lrc;.vxd;<br>.cpl;.x32, "Executable File" 
    504B0304, .zip, "Zip Compressed"
    3A42617365, .cnt, ""
    D0CF11E0A1B11AE1, .doc;.xls;.xlt;.ppt;.apr, "MS Compound Document v1 or Lotus Approach APR file"
    0100000058000000, .emf, ""
    03000000C466C456, .evt, ""
    3F5F0300, .gid;.hlp;.lhp, "Windows Help File"
    1F8B08, .gz, "GZ Compressed File"
    28546869732066696C65, .hqx, ""
    0000010000, .ico, "Icon File"
    4C000000011402, .lnk, "Windows Link File"
    25504446, .pdf, "Adobe PDF File"
    5245474544495434, .reg, ""
    7B5C727466, .rtf, "Rich Text Format File"
    lh, .lzh, "Lz compression file"
    MThd, .mid, ""
    0A050108, .pcx, ""
    25215053, .eps, "Adobe EPS File"
    2112, .ain, "AIN Archive File"
    1A02, .arc, "ARC/PKPAK Compressed 1"
    1A03, .arc, "ARC/PKPAK Compressed 2"
    1A04, .arc, "ARC/PKPAK Compressed 3"
    1A08, .arc, "ARC/PKPAK Compressed 4"
    1A09, .arc, "ARC/PKPAK Compressed 5"
    60EA, .arj, "ARJ Compressed"
    41564920, .avi, "Audio Video Interleave (AVI)"
    425A68, .bz;.bz2, "Bzip Archive"
    49536328, .cab, "Cabinet File"
    4C01, .obj, "Compiled Object Module"
    303730373037, .tar;.cpio, "CPIO Archive File"
    4352555348, .cru;.crush, "CRUSH Archive File"
    3ADE68B1, .dcx, "DCX Graphic File"
    1F8B, .gz;.tar;.tgz, "Gzip Archive File"
    91334846, .hap, "HAP Archive File"
    3C68746D6C3E, .htm;.html, "HyperText Markup Language 1"
    3C48544D4C3E, .htm;.html, "HyperText Markup Language 2"
    3C21444F4354, .htm;.html, "HyperText Markup Language 3"
    100, .ico, "ICON File"
    5F27A889, .jar, "JAR Archive File"
    2D6C68352D, .lha, "LHA Compressed"
    20006040600, .wk1;.wks, "Lotus 123 v1 Worksheet"
    00001A0007800100, .fm3, "Lotus 123 v3 FMT file"
    00001A0000100400, .wk3, "Lotus 123 v3 Worksheet"
    20006800200, .fmt, "Lotus 123 v4 FMT file"
    00001A0002100400, .wk4, "Lotus 123 v5"
    5B7665725D, .ami, "Lotus Ami Pro"
    300000041505052, .adx, "Lotus Approach ADX file"
    1A0000030000, .nsf;.ntf, "Lotus Notes Database/Template"
    4D47582069747064, .ds4, "Micrografix Designer 4"
    4D534346, .cab, "Microsoft CAB File Format"
    4D546864, .mid, "Midi Audio File"
    000001B3, .mpg;.mpeg, "MPEG Movie"
    0902060000001000B9045C00, .xls, "MS Excel v2"
    0904060000001000F6055C00, .xls, "MS Excel v4"
    7FFE340A, .doc, "MS Word"
    1234567890FF, .doc, "MS Word 6.0"
    31BE000000AB0000, .doc, "MS Word for DOS 6.0"
    1A00000300001100, .nsf, "Notes Database"
    7E424B00, .psp, "PaintShop Pro Image File"
    504B0304, .zip, "PKZIP Compressed"
    89504E470D0A, .png, "PNG Image File"
    6D646174, .mov, "QuickTime Movie"
    6D646174, .qt, "Quicktime Movie File"
    52617221, .rar, "RAR Archive File"
    2E7261FD, .ra;.ram, "Real Audio File"
    EDABEEDB, .rpm, "RPM Archive File"
    2E736E64, .au, "SoundMachine Audio File"
    53495421, .sit, "Stuffit v1 Archive File"
    53747566664974, .sit, "Stuffit v5 Archive File"
    1F9D, .z, "TAR Compressed Archive File"
    49492A, .tif;.tiff, "TIFF (Intel)"
    4D4D2A, .tif;.tiff, "TIFF (Motorola)"
    554641, .ufa, "UFA Archive File"
    57415645666D74, .wav, "Wave Files"
    D7CDC69A, .wmf, "Windows Meta File"
    4C000000, .lnk, "Windows Shortcut (Link File)"
    504B3030504B0304, .zip, "WINZIP Compressed"
    FF575047, .wpg, "WordPerfect Graphics"
    FF575043, .wp, "WordPerfect v5 or v6"
    3C3F786D6C, .xml, "XML Document"
    FFFE3C0052004F004F0054005300540055004200, .xml, "XML Document (ROOTSTUB)"
    3C21454E54495459, .dtd, "XML DTD"
    5A4F4F20, .zoo, "ZOO Archive File"
	 * </pre>
	 * 
	 */
	public enum FileType {
		/**
		 * JEPG.
		 */
		JPEG("FFD8FF"),

		/**
		 * PNG.
		 */
		PNG("89504E47"),

		/**
		 * GIF.
		 */
		GIF("47494638"),

		/**
		 * TIFF.
		 */
		TIFF("49492A00"),

		/**
		 * Windows Bitmap.
		 */
		BMP("424D"),

		/**
		 * CAD.
		 */
		DWG("41433130"),

		/**
		 * Adobe Photoshop.
		 */
		PSD("38425053"),

		/**
		 * Rich Text Format.
		 */
		RTF("7B5C727466"),

		/**
		 * XML.
		 */
		XML("3C3F786D6C"),

		/**
		 * HTML.
		 */
		HTML("68746D6C3E"),
		/**
		 * CSS.
		 */
		CSS("48544D4C207B0D0A0942"),
		/**
		 * JS.
		 */
		JS("696B2E71623D696B2E71"),
		/**
		 * Email [thorough only].
		 */
		EML("44656C69766572792D646174653A"),

		/**
		 * Outlook Express.
		 */
		DBX("CFAD12FEC5FD746F"),

		/**
		 * Outlook (pst).
		 */
		PST("2142444E"),

		/**
		 * MS Word/Excel.
		 */
		XLS_DOC("D0CF11E0"), XLSX_DOCX("504B030414000600080000002100"),
		/**
		 * Visio
		 */
		VSD("d0cf11e0a1b11ae10000"),
		/**
		 * MS Access.
		 */
		MDB("5374616E64617264204A"),
		/**
		 * WPS文字wps、表格et、演示dps都是一样的
		 */
		WPS("d0cf11e0a1b11ae10000"),
		/**
		 * torrent
		 */
		TORRENT("6431303A637265617465"),
		/**
		 * WordPerfect.
		 */
		WPD("FF575043"),

		/**
		 * Postscript.
		 */
		EPS("252150532D41646F6265"),

		/**
		 * Adobe Acrobat.
		 */
		PDF("255044462D312E"),

		/**
		 * Quicken.
		 */
		QDF("AC9EBD8F"),

		/**
		 * Windows Password.
		 */
		PWL("E3828596"),

		/**
		 * ZIP Archive.
		 */
		ZIP("504B0304"),

		/**
		 * RAR Archive.
		 */
		RAR("52617221"),
		/**
		 * JSP Archive.
		 */
		JSP("3C2540207061676520"),
		/**
		 * JAVA Archive.
		 */
		JAVA("7061636B61676520"),
		/**
		 * CLASS Archive.
		 */
		CLASS("CAFEBABE0000002E00"),
		/**
		 * JAR Archive.
		 */
		JAR("504B03040A000000"),
		/**
		 * MF Archive.
		 */
		MF("4D616E69666573742D56"),
		/**
		 * EXE Archive.
		 */
		EXE("4D5A9000030000000400"),
		/**
		 * CHM Archive.
		 */
		CHM("49545346030000006000"),
		/*
		 * INI("235468697320636F6E66"), SQL("494E5345525420494E54"), BAT(
		 * "406563686F206f66660D"), GZ("1F8B0800000000000000"), PROPERTIES(
		 * "6C6F67346A2E726F6F74"), MXP( "04000000010000001300"),
		 */
		/**
		 * Wave.
		 */
		WAV("57415645"),

		/**
		 * AVI.
		 */
		AVI("41564920"),

		/**
		 * Real Audio.
		 */
		RAM("2E7261FD"),

		/**
		 * Real Media.
		 */
		RM("2E524D46"),

		/**
		 * MPEG (mpg).
		 */
		MPG("000001BA"),

		/**
		 * Quicktime.
		 */
		MOV("6D6F6F76"),

		/**
		 * Windows Media.
		 */
		ASF("3026B2758E66CF11"),

		/**
		 * MIDI.
		 */
		MID("4D546864"),
		/**
		 * MP4.
		 */
		MP4("00000020667479706d70"),
		/**
		 * MP3.
		 */
		MP3("49443303000000002176"),
		/**
		 * FLV.
		 */
		FLV("464C5601050000000900");

		private String value = "";

		/**
		 * 
		 * @param type
		 */
		private FileType(String value) {
			this.value = value;
		}

		public String getValue() {
			return value;
		}

		public void setValue(String value) {
			this.value = value;
		}

	}

	/**
	 * 将文件头转换成16进制字符串 *
	 * 
	 * @param 原生byte
	 * @return 16进制字符串
	 */
	private static String bytesToHexString(byte[] src) {
		StringBuilder stringBuilder = new StringBuilder();
		if (src == null || src.length <= 0) {
			return null;
		}
		for (int i = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString();
	}

	/**
	 * 得到文件头
	 * 
	 * @param filePath
	 *            文件路径
	 * @return 文件头
	 * @throws IOException
	 */
	private static String getFileContent(String filePath) throws IOException {
		byte[] b = new byte[28];
		InputStream inputStream = null;
		try {
			inputStream = new FileInputStream(filePath);
			inputStream.read(b, 0, 28);
		} catch (IOException e) {
			e.printStackTrace();
			throw e;
		} finally {
			if (inputStream != null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
					throw e;
				}
			}
		}
		return bytesToHexString(b);
	}

	/**
	 * * 判断文件类型
	 * 
	 * @param filePath
	 *            文件路径
	 * @return 文件类型
	 */
	public static FileType getType(String filePath) throws IOException {
		String fileHead = getFileContent(filePath);
		if (fileHead == null || fileHead.length() == 0) {
			return null;
		}
		fileHead = fileHead.toUpperCase();
		FileType[] fileTypes = FileType.values();
		for (FileType type : fileTypes) {
			if (fileHead.startsWith(type.getValue())) {
				return type;
			}
		}
		return null;
	}

	public static void main(String args[]) throws Exception {
		System.out.println(FileTypeUtil.getType("C:/Users/hou/Desktop/note.zip"));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值