- 浏览: 253194 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (194)
- java (23)
- 数据结构和算法 (5)
- oracle (7)
- sql server (1)
- mysql (5)
- Ajax (5)
- JSTL (7)
- jsp (20)
- 组件 (11)
- C++可视化 (0)
- javascript (14)
- c/c++ (0)
- XML (6)
- 只是扩宽 (0)
- 设计模式 (3)
- 正则表达式 (3)
- 心情和感悟 (4)
- ACM (3)
- HTML/css (9)
- 软件破解 (2)
- spring (1)
- struts (15)
- hibernate (10)
- Servlet (2)
- sql (2)
- 面试题 (1)
- struts2 (22)
- Unix/Linux (0)
- javamail (1)
- svn (1)
- 异常 (3)
- EJB (3)
- jquery (2)
- android (1)
最新评论
-
lianlupengUestc:
From my testing (Struts2 versio ...
struts2 注解 -
yulongxiang:
非常感谢!!!!!!!
使用动态ActionForm(转)
Apache commons-fileupload是一个很好的文件上传工具,最近使用commons-fileupload实现了图片的上传及显示,可将图片保存在 指定的文件夹中,也可以将图片存放在数据库,并支持四种常用的图片格式:jpg,png,gif,bmp。 首先,跟上传一般文件一样,需要写一个servlet来处理上传的文件,你可以修改保存路径或选择将图片保存在数据库中,只需要做简单的修改就行了,servlet代码如下:
FileUploadServlet.java
servlet中使用到一个ImageUtil类,其中封装了图片处理的实用方法,用于读写图片,代码如下:
ImageUtil.java
注意:对gif格式的图片进行处理的时候,需要另外一下jar包:gif89.jar,因为gif格式的图片不能使用ImageIO进行输出。 如需将图片存放到数据库中,只需要修改红色部
FileUploadServlet.java
package com.ek.servlet;import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.ek.image.ImageUtil;public class FileUploadServlet extends HttpServlet {/** * */ private static final long serialVersionUID = 1L;private static String filePath = "";/** * Destruction of the servlet. <br> */public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here }/** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to * post. * * @param request * the request send by the client to the server * @param response * the response send by the server to the client * @throws ServletException * if an error occurred * @throws IOException * if an error occurred */ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() factory.setRepository(new File(filePath)); ServletFileUpload upload = new ServletFileUpload(factory); // maximum size before a FileUploadException will be thrown upload.setSizeMax(1000000); try { List fileItems = upload.parseRequest(req); Iterator iter = fileItems.iterator(); // Get the file name String regExp = ".+\\\\(.+\\.?())$"; Pattern fileNamePattern = Pattern.compile(regExp); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { String name = item.getName(); long size = item.getSize(); if ((name == null || name.equals("")) && size == 0) continue; Matcher m = fileNamePattern.matcher(name); boolean result = m.find(); if (result) { try { // String type = // m.group(1).substring(m.group(1).lastIndexOf('.')+1); InputStream stream = item.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] b = new byte[1000]; while (stream.read(b) > 0) { baos.write(b); } byte[] imageByte = baos.toByteArray(); String type = ImageUtil.getImageType(imageByte); if (type.equals(ImageUtil.TYPE_NOT_AVAILABLE)) throw new Exception("file is not a image"); BufferedImage myImage = ImageUtil .readImage(imageByte); // display the image ImageUtil.printImage(myImage, type, res .getOutputStream()); // save the image // if you want to save the file into database, do it here // when you want to display the image, use the method printImage in ImageUtil item.write(new File(filePath + "\\" + m.group(1))); stream.close(); baos.close(); } catch (Exception e) { e.printStackTrace(); } } else { throw new IOException("fail to upload"); } } } } catch (IOException e) { e.printStackTrace(); } catch (FileUploadException e) { e.printStackTrace(); } }/** * Initialization of the servlet. <br> * * @throws ServletException * if an error occure */ public void init() throws ServletException { // Change the file path here filePath = getServletContext().getRealPath("/"); }}
servlet中使用到一个ImageUtil类,其中封装了图片处理的实用方法,用于读写图片,代码如下:
ImageUtil.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;/** * @author Erick Kong * @see ImageUtil.java * @createDate: 2007-6-22 * @version 1.0 */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) { // TODO Auto-generated catch block 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); }/** * * @param bi * @param type * @param 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) { // TODO Auto-generated catch block e.printStackTrace(); } }/** * Get image type from byte[] * * @param textObj * image byte[] * @return String image type */ 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进行输出。 如需将图片存放到数据库中,只需要修改红色部
发表评论
-
log4j --文件输出路径
2010-10-27 23:23 1425利用占位符,然后再利用servlet给占位符赋值 log ... -
log4j
2010-10-24 23:27 893log4j.rootLogger=[level], appen ... -
上传文件
2010-10-11 14:41 2098上传: 需要导入两个包:commons-fileupload- ... -
有关FileUpload组件的使用和调试的经验(转)
2010-08-30 12:29 805在通过使用FileUpload组件上传的过程中,通过自己的调试 ... -
jfreechart设置饼图百分比
2010-08-30 12:28 1500PiePlot3D plot=(PiePlot3D)c ... -
javamail发送邮件的简单实例 (转
2010-08-30 12:27 807第一个类:MailSenderInfo.java packa ... -
jfreechart中文乱码问题解决方案
2010-08-30 12:25 755jfreechart中文乱码问题解 ... -
使用 JFreeChart来创建基于web的图表 (转)
2010-08-30 12:25 749使用 JFreeChart来创建基于web的图表 ... -
jfreechart使用总结(转)
2010-08-30 12:22 1019这里分三部分来介绍 jFreeChart 。第一部分介绍jFr ... -
Enctype=multipart/form-data 有什么用?
2010-08-30 12:21 1286ENCTYPE="multipart/form-da ...
相关推荐
在JSP(JavaServer Pages)中,显示本地图片预览是一项常见的需求,特别是在网页开发中。JSP是一种基于Java的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,以实现服务器端的数据处理和动态...
5. **图片显示流程**:当需要显示图片时,JSP页面发送一个HTTP请求到对应的Servlet。Servlet查询数据库,找到对应图片的二进制数据,然后将数据转换为InputStream。接下来,Servlet设置响应的Content-Type为"image/...
上传图片时,选择图片之后显示在页面上,现成的代码,直接使用即可
**JSP SmartUpload上传并显示图片新闻示例** 在Web开发中,经常需要处理用户上传文件的功能,尤其是图片。`JSP SmartUpload`是一个强大的Java Servlet组件,它简化了文件上传的过程,支持多文件上传、文件大小限制...
以上就是使用JSP和Tag实现上传并显示图片功能的详细步骤。这个过程涉及到前端交互、后端处理、自定义标签的创建以及服务器配置,对于理解和实践Web开发中的文件操作和自定义标签机制非常有帮助。
总的来说,"在JSP中上传图片和缩略显示图片"涉及到了以下几个关键知识点: 1. JSP文件上传:使用multipart/form-data编码类型,结合jspSmartUpload库处理文件上传。 2. 文件操作:将上传的图片保存到服务器指定位置...
在这个“JSP源码,图片上传,进度条,JSP图片上传实例”的主题中,我们将深入探讨如何使用JSP进行图片上传,并结合进度条展示上传进度。 首先,图片上传功能是网站或应用程序中常见的一种交互需求。用户可以通过这种...
在JavaServer Pages (JSP) 中实现图片上传并立即显示是一项常见的需求,尤其在Web开发中,例如用户头像上传、商品图片展示等场景。这个功能涉及到文件上传、图像处理和动态网页显示等多个技术环节。以下将详细讲解...
在本文中,我们将深入探讨如何使用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实训六:JSP实现图片上传与读取显示 #### 实训目的 1. **掌握使用common-fileupload组件实现图片的上传**:通过学习并应用common-fileupload组件,学员能够实现用户端图片的选择与服务器端的保存过程。 2. *...
在本文中,我们将深入探讨如何使用JSP与jspsmartupload控件将图片上传到数据库。jspsmartupload是一款强大的JSP文件上传组件,能够帮助开发者处理用户通过表单提交的多个文件。以下是对这个技术栈的详细解析: 1. *...
在这个场景中,标题"JSP显示图片"指的是如何在JSP页面上展示用户上传的图片。描述中的“完整的,上传图片之后,显示图片,很好看的”暗示了这个项目可能包含了一个完整的图片上传和显示功能,并且用户体验良好。 在...
【标题】"jsp ueditor 上传图片"涉及的是在Java Web开发中使用UEditor这款富文本编辑器进行图片上传的功能实现。UEditor是一款强大的在线文本编辑器,它提供了丰富的编辑功能,包括插入图片、视频、链接等。在JSP...
JSP上传图片并裁切及放大显示,常用的JSP程序,看到有不少的图片上传、缩放及裁切程序,手痒就写了个,网上见的多的都是ASP/ASP.NET、php的,还没有发现有JSP的,写时候参数程序比较少,因此程序并不完善,只是实现...
本篇将详细讲解如何利用SmartUpload组件在JSP中实现批量上传图片的功能。 首先,SmartUpload是Java的一个开源组件,专门用于处理文件上传,它简化了文件上传的复杂性,提供了易用的API,支持单个文件上传和批量文件...
6. **反馈结果**:Struts返回一个视图(可能是JSP),显示上传成功或失败的信息。 在本示例的压缩包中,"uploadFilePreview"可能是一个预览图片的功能,用于在上传后即时展示图片,或者在上传过程中对图片进行预览...