实现图片上传
用户必须能够上传图片,因此需要文件上传的功能。比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),Spring已经完全集成了这两种组件,这里我们选择Commons FileUpload。
由于Post一个包含文件上传的Form会以multipart/form-data请求发送给服务器,必须明确告诉DispatcherServlet如何处理MultipartRequest。首先在dispatcher-servlet.xml中声明一个MultipartResolver:
xml 代码
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为1MB -->
<property name="maxUploadSize">
<value>1048576</value>
</property>
</bean>
这样一旦某个Request是一个MultipartRequest,它就会首先被MultipartResolver处理,然后再转发相应的Controller。
在UploadImageController中,将HttpServletRequest转型为MultipartHttpServletRequest,就能非常方便地得到文件名和文件内容:
java 代码
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 转型为MultipartHttpRequest:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件:
MultipartFile file = multipartRequest.getFile(" file ");
// 获得文件名:
String filename = file.getOriginalFilename();
// 获得输入流:
InputStream input = file.getInputStream();
// 写入文件
// 或者:
File source = new File(localfileName.toString());
multipartFile.transferTo(source);
}
生成缩略图 (目录)
当用户上传了图片后,必须生成缩略图以便用户能快速浏览。我们不需借助第三方软件,JDK标准库就包含了图像处理的API。我们把一张图片按比例缩放到120X120大小,以下是关键代码:
java 代码
public static void createPreviewImage(String srcFile, String destFile) {
try {
File fi = new File(srcFile); // src
File fo = new File(destFile); // dest
BufferedImage bis = ImageIO.read(fi);
int w = bis.getWidth();
int h = bis.getHeight();
double scale = (double) w / h;
int nw = IMAGE_SIZE; // final int IMAGE_SIZE = 120;
int nh = (nw * h) / w;
if (nh > IMAGE_SIZE) {
nh = IMAGE_SIZE;
nw = (nh * w) / h;
}
double sx = (double) nw / w;
double sy = (double) nh / h;
transform.setToScale(sx, sy);
AffineTransformOp ato = new AffineTransformOp(transform, null);
BufferedImage bid = new BufferedImage(nw, nh,
BufferedImage.TYPE_3BYTE_BGR);
ato.filter(bis, bid);
ImageIO.write(bid, " jpeg ", fo);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(
" Failed in create preview image. Error: "
+ e.getMessage());
}
}
分享到:
相关推荐
ASP图片上传组件是一种在Web应用中用于处理用户端图片上传功能的工具,它极大地简化了开发者在ASP(Active Server Pages)环境下实现图片上传的过程。图片批量上传控件和插件则进一步增强了这种功能,允许用户一次性...
在前端开发中,图片上传是一种常见需求,Vue.js作为现代web开发中非常受欢迎的JavaScript框架之一,与Element UI这一基于Vue 2.0的桌面端组件库结合使用时,可以非常便捷地实现图片上传功能。Element UI提供了丰富的...
本知识点聚焦于使用易语言进行POST方式的图片上传操作,这是一种常见的网络数据传输方法,尤其在网页表单提交、文件上传等场景中广泛应用。 在Web开发中,POST请求常用于向服务器发送数据,包括文本、图片等各种...
在图片上传的场景下,ASP批量上传系统可能还会包含图像处理功能,如缩略图生成、尺寸调整、质量优化等。这通常需要利用到服务器端的图像处理库,如GD库或ImageMagick。 安全方面,ASP批量上传系统需要防止恶意文件...
在移动Web开发中,图片上传是一项常见的功能,它允许用户通过手机浏览器选择并发送本地图片到服务器。这个过程涉及到前端和后端的交互,并且为了提供良好的用户体验,通常需要显示上传进度条。以下是对这个主题的...
在IT行业中,图片上传功能是Web应用中常见且重要的组成部分,尤其在社交媒体、电商网站以及内容管理系统等场景中。本文将详细讲解如何实现一个基于JSP的图片上传功能,并将图片路径存储到MSSQL2000数据库中的技术...
在Android应用开发中,图片上传是一项常见的功能,尤其是在社交、媒体分享或云存储类的应用中。为了实现这一功能,开发者通常需要设计一个高效且可靠的图片上传队列Service。本篇文章将详细探讨如何创建一个名为...
在C#编程环境中,开发一个用于WinForms应用的图片上传功能是一项常见的任务,尤其是在构建具有用户交互界面的应用程序时。这个功能通常会结合文件选择、图片预览以及上传操作,为用户提供直观且易于使用的体验。以下...
本示例项目 "uniapp多张图片上传.rar" 提供了一个关于如何在 uniapp 中实现多张图片上传的实例,下面我们将详细探讨这个知识点。 首先,`main.js` 是应用的主入口文件,通常用于配置全局变量和挂载根 Vue 实例。在...
在IT行业中,图片上传功能是Web应用和移动应用中非常常见的一种需求,特别是在社交媒体、电商、博客等场景下。本文将深入探讨如何使用Java来实现图片上传的功能,主要涉及的技术点包括文件处理、HTTP请求、Multipart...
《MultiPhotoUpload多图片上传技术详解》 在数字化时代的今天,图像信息的交流与分享日益频繁,多图片上传功能已经成为各类应用和平台不可或缺的一部分。"MultiPhotoUpload"就是这样一个专门针对商户平台评论、发表...
FraUpload多图片上传插件是一款专门用于实现网页端多张图片上传功能的工具,它基于Stable框架构建,提供了一种高效、稳定的解决方案。这款插件不仅支持批量上传,还具备图片预览、可拖动排序等人性化特性,极大地...
在Java Web开发中,图片上传是一项常见的功能,用于允许用户上传他们的图片文件到服务器,然后在网站上展示。本教程将深入讲解如何使用Struts2框架和Apache Commons FileUpload库来实现这一功能。 首先,我们需要...
在Web应用开发中,图片上传和预览显示是一项非常常见的需求,涉及到前端页面与后端处理的配合,以及对数据库的操作。 本文详细介绍了如何在*** MVC框架中实现图片上传和预览显示的整个过程,这包括前端页面设计、...
在IT领域,图片上传本地预览插件是一个常见的功能组件,尤其在网页应用和桌面软件中,它极大地提升了用户体验。这个插件的核心作用是让用户在实际上传图片到服务器之前,能够在本地环境中预览图片效果,确保图片的...
在本文中,我们将深入探讨如何使用JavaScript(JS)与ASP.NET技术实现图片上传、预览以及支持多文件上传和上传前预览的功能。这个技术组合是现代Web应用中常见的需求,尤其是在用户交互丰富的网站和应用中。 首先,...
在Web开发中,图片上传和预览是常见的功能需求,尤其对于用户交互丰富的应用来说。Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件...
这个"Flex4.6+java+servlet上传图片例子+图片上传预览"的项目,结合了前端的Flex技术和后端的Java Servlet,为我们提供了一个完整的解决方案。下面将详细解释这个项目的各个组成部分及其工作原理。 首先,让我们来...
提供了图片上传、裁剪和预览等功能,对与图片处理相关的程序具有重要的借鉴参考意义。 使用方法:下载压缩包后解压到本地,然后使用Eclipse或MyEclipse导入项目即可,项目路径中包含docs文件夹,里面有数据库表文件...
【仿淘宝图片上传】是一个基于jQuery实现的图片上传功能,主要目标是提供与淘宝网站类似的用户体验,让用户能够方便快捷地上传图片。这个功能通常包括图片预览、多图选择、图片裁剪、上传进度显示等多个关键步骤,...