Apache commons-fileupload是一个很好的文件上传工具,最近使用commons-fileupload实现了图片的上传及显示,可将图片保存在指定的文件夹中,也可以将图片存放在数据库,并支持四种常用的图片格式:jpg,png,gif,bmp。
首先,跟上传一般文件一样,需要写一个servlet来处理上传的文件,你可以修改保存路径或选择将图片保存在数据库中,只需要做简单的修改就行了,servlet代码如下:
FileUploadServlet.java
servlet中使用到一个ImageUtil类,其中封装了图片处理的实用方法,用于读写图片,代码如下:
ImageUtil.java
java 代码
- package com.ek.image;
- import java.awt.Component;
- import java.awt.Graphics2D;
- import java.awt.GraphicsConfiguration;
- import java.awt.GraphicsDevice;
- import java.awt.GraphicsEnvironment;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.image.BufferedImage;
- import java.awt.image.ColorModel;
- import java.awt.image.PixelGrabber;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Iterator;
- import javax.imageio.ImageIO;
- import javax.imageio.ImageReader;
- import javax.imageio.stream.MemoryCacheImageInputStream;
- import net.jmge.gif.Gif89Encoder;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import com.sun.imageio.plugins.bmp.BMPImageReader;
- import com.sun.imageio.plugins.gif.GIFImageReader;
- import com.sun.imageio.plugins.jpeg.JPEGImageReader;
- import com.sun.imageio.plugins.png.PNGImageReader;
-
-
-
-
-
-
- public class ImageUtil {
-
- public static final String TYPE_GIF = "gif";
- public static final String TYPE_JPEG = "jpeg";
- public static final String TYPE_PNG = "png";
- public static final String TYPE_BMP = "bmp";
- public static final String TYPE_NOT_AVAILABLE = "na";
- private static ColorModel getColorModel(Image image)
- throws InterruptedException, IllegalArgumentException {
- PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
- if (!pg.grabPixels())
- throw new IllegalArgumentException();
- return pg.getColorModel();
- }
- private static void loadImage(Image image) throws InterruptedException,
- IllegalArgumentException {
- Component dummy = new Component() {
- private static final long serialVersionUID = 1L;
- };
- MediaTracker tracker = new MediaTracker(dummy);
- tracker.addImage(image, 0);
- tracker.waitForID(0);
- if (tracker.isErrorID(0))
- throw new IllegalArgumentException();
- }
- public static BufferedImage createBufferedImage(Image image)
- throws InterruptedException, IllegalArgumentException {
- loadImage(image);
- int w = image.getWidth(null);
- int h = image.getHeight(null);
- ColorModel cm = getColorModel(image);
- GraphicsEnvironment ge = GraphicsEnvironment
- .getLocalGraphicsEnvironment();
- GraphicsDevice gd = ge.getDefaultScreenDevice();
- GraphicsConfiguration gc = gd.getDefaultConfiguration();
- BufferedImage bi = gc.createCompatibleImage(w, h, cm.getTransparency());
- Graphics2D g = bi.createGraphics();
- g.drawImage(image, 0, 0, null);
- g.dispose();
- return bi;
- }
- public static BufferedImage readImage(InputStream is) {
- BufferedImage image = null;
- try {
- image = ImageIO.read(is);
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- return image;
- }
-
- public static BufferedImage readImage(byte[] imageByte) {
- ByteArrayInputStream bais = new ByteArrayInputStream(imageByte);
- BufferedImage image = readImage(bais);
- return image;
- }
- public static void encodeGIF(BufferedImage image, OutputStream out)
- throws IOException {
- Gif89Encoder encoder = new Gif89Encoder(image);
- encoder.encode(out);
- }
-
-
-
-
-
-
- public static void printImage(BufferedImage bi, String type,
- OutputStream out) {
- try {
- if (type.equals(TYPE_GIF))
- encodeGIF(bi, out);
- else
- ImageIO.write(bi, type, out);
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- }
-
-
-
-
-
-
-
- public static String getImageType(byte[] textObj) {
- String type = TYPE_NOT_AVAILABLE;
- ByteArrayInputStream bais = null;
- MemoryCacheImageInputStream mcis = null;
- try {
- bais = new ByteArrayInputStream(textObj);
- mcis = new MemoryCacheImageInputStream(bais);
- Iterator itr = ImageIO.getImageReaders(mcis);
- while (itr.hasNext()) {
- ImageReader reader = (ImageReader) itr.next();
- if (reader instanceof GIFImageReader) {
- type = TYPE_GIF;
- } else if (reader instanceof JPEGImageReader) {
- type = TYPE_JPEG;
- } else if (reader instanceof PNGImageReader) {
- type = TYPE_PNG;
- } else if (reader instanceof BMPImageReader) {
- type = TYPE_BMP;
- }
- reader.dispose();
- }
- } finally {
- if (bais != null) {
- try {
- bais.close();
- } catch (IOException ioe) {
- if (_log.isWarnEnabled()) {
- _log.warn(ioe);
- }
- }
- }
- if (mcis != null) {
- try {
- mcis.close();
- } catch (IOException ioe) {
- if (_log.isWarnEnabled()) {
- _log.warn(ioe);
- }
- }
- }
- }
- if (_log.isDebugEnabled()) {
- _log.debug("Detected type " + type);
- }
- return type;
- }
- private static Log _log = LogFactory.getLog(ImageUtil.class);
- }
注意:对gif格式的图片进行处理的时候,需要另外一下jar包:gif89.jar,因为gif格式的图片不能使用ImageIO进行输出。
如需将图片存放到数据库中,只需要修改红色部分,将图片以blob格式保存到数据库中,显示时以byte[]格式读出,使用ImageUtil.printImage()进行输出。
分享到:
相关推荐
在JSP(JavaServer Pages)中,显示本地图片预览是一项常见的需求,特别是在网页开发中。JSP是一种基于Java的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,以实现服务器端的数据处理和动态...
上传图片时,选择图片之后显示在页面上,现成的代码,直接使用即可
5. **图片显示流程**:当需要显示图片时,JSP页面发送一个HTTP请求到对应的Servlet。Servlet查询数据库,找到对应图片的二进制数据,然后将数据转换为InputStream。接下来,Servlet设置响应的Content-Type为"image/...
7. **示例代码**:在提供的文件中,"JSP上传图片前预览图片实现方法及代码.txt"很可能包含了实现这一功能的具体代码片段,而"jsp图片上传代码(简单点)-一维可航 - 新浪BLOG.htm"可能是完整的JSP上传页面的示例。...
**JSP SmartUpload上传并显示图片新闻示例** 在Web开发中,经常需要处理用户上传文件的功能,尤其是图片。`JSP SmartUpload`是一个强大的Java Servlet组件,它简化了文件上传的过程,支持多文件上传、文件大小限制...
以上就是使用JSP和Tag实现上传并显示图片功能的详细步骤。这个过程涉及到前端交互、后端处理、自定义标签的创建以及服务器配置,对于理解和实践Web开发中的文件操作和自定义标签机制非常有帮助。
总的来说,"在JSP中上传图片和缩略显示图片"涉及到了以下几个关键知识点: 1. JSP文件上传:使用multipart/form-data编码类型,结合jspSmartUpload库处理文件上传。 2. 文件操作:将上传的图片保存到服务器指定位置...
在这个“JSP源码,图片上传,进度条,JSP图片上传实例”的主题中,我们将深入探讨如何使用JSP进行图片上传,并结合进度条展示上传进度。 首先,图片上传功能是网站或应用程序中常见的一种交互需求。用户可以通过这种...
在本文中,我们将深入探讨如何使用Servlet和JSP实现一个简单的图片上传并显示的功能。Servlet是一种Java编程技术,常用于扩展服务器的功能,处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,可以方便...
在这个场景中,"jsp上传图片预览"是一个常见的需求,它涉及到用户在上传图片前能够在网页上预览所选的图片。这一功能不仅提升了用户体验,也减少了因上传错误图片而导致的不必要的麻烦。 首先,我们需要了解图片...
本文将详细讲解如何实现一个基于JSP的图片上传功能,并将图片路径存储到MSSQL2000数据库中的技术要点。 首先,我们需要理解JSP(JavaServer Pages)的角色。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入...
结合Servlet,JSP能够处理用户提交的数据,比如图片上传功能。在这个场景中,我们将探讨如何使用JSP来实现图片上传到数据库的过程。 首先,我们需要依赖两个关键库:`commons-io-1.3.2-bin.zip` 和 `commons-...
9. **前端展示**:在`JSP`页面上,可以显示上传结果,比如成功信息、错误信息,甚至预览上传的图片。 以上就是`JSP`和`Servlet`结合实现图片上传功能的基本流程。实践中,还可能涉及到安全性优化,如使用MIME类型...
在本文中,我们将深入探讨如何使用JSP与jspsmartupload控件将图片上传到数据库。jspsmartupload是一款强大的JSP文件上传组件,能够帮助开发者处理用户通过表单提交的多个文件。以下是对这个技术栈的详细解析: 1. *...
- 显示图片的长宽和大小,可以通过读取图片文件的元数据来获取,例如使用Java的`ImageIO`类。 7. **PHP替代方案**: - 如果没有JSP的源代码,可以使用PHP的`$_FILES`全局变量来处理图片上传,`move_uploaded_file...
本教程将探讨如何使用Java Server Pages (JSP) 技术来实现这个功能,将图片从客户端上传到服务器的硬盘上。JSP是Java平台上的一个动态网页技术,它允许我们混合HTML、CSS和Java代码来创建交互式的网页应用。 首先,...
在这个场景中,标题"JSP显示图片"指的是如何在JSP页面上展示用户上传的图片。描述中的“完整的,上传图片之后,显示图片,很好看的”暗示了这个项目可能包含了一个完整的图片上传和显示功能,并且用户体验良好。 在...
在JSP页面中,图片上传成功后通常会有一段JavaScript代码负责向服务器发起请求,获取上传成功的图片地址,然后更新到页面上显示。假设代码如下: ```html ${siInfoMap.LOGO}" width="255px" height="66px;" /> ``` ...
3. **初始化编辑器**:在JSP页面的JavaScript代码中,使用`UE.getEditor()`方法初始化UEditor,指定编辑器的ID和相关配置,如图片上传的URL、文件大小限制等。 ```javascript var editor = UE.getEditor('...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)实现一个简单的图片上传功能,包括将图片上传到本地文件夹以及在网页上显示。首先,我们需要了解JSP的基础知识,它是Java EE(Enterprise Edition)的一...