1、添加虚拟目录,在tomcat的server.xml中找到Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"></Host>标签,在此标签中添加<Context docBase="D:\TestM\photo" path="/photo" reloadable="false"/>(此处设置D:\TestM\photo为虚拟目录,可以根据自己的需要设置)
2、上传图片的html:
<div class="userPhoto" style="width: 800px">
<form id="formUp" action="" enctype="multipart/form-data">
<input type="hidden" id="userId" value="${userInfo.id }" name="userId" />
<table style="width: 800px">
<tr>
<td width="150px"><img id="showPhoto" alt="暂无图片" src="/photo/${SessionUser.photo }"></td>
<td align="left"><input type="button" id="button_submit" value="选择图片" /></td>
<td style="display: none;"><input type="file" id="photoUp" name="image" value="上传图片" /></td>
</tr>
</table>
</form>
</div>
3、上传图片的js:
$("#showPhoto").attr("width","150");
$("#showPhoto").attr("height","150");
$("#button_submit").click(function(){
$("#photoUp").click();
});
$("#photoUp").change(function(){
var formData = new FormData($("#formUp")[0]);
var aaa = "aaa";
$.ajax({
url:"userPhotoUplaod.do",
type:"post",
data : formData,
async : false,
cache : false,
contentType : false,
processData : false,
success : function(data) {
if(data.upload == "success"){
$("#showPhoto").attr("src","/photo/"+data.photoUrl);
/* $("#showPhoto").attr("src","showImages.do?name=image&"+new Date().toTimeString());
$("#showPhoto").attr("width","150");
$("#showPhoto").attr("height","150"); */
}
},
});
});
4、上传图片的control层:
@RequestMapping("userPhotoUplaod")
@ResponseBody
public Map<String,Object> upLoad(HttpServletRequest request,HttpServletResponse response,Integer userId) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
// 从请求中获取到文件信息需要将请求转换为MultipartHttpServletRequest类型
MultipartHttpServletRequest multipartRequest = request instanceof MultipartHttpServletRequest ? (MultipartHttpServletRequest) request : null;
MultipartFile file = multipartRequest.getFile("image");
String fileType = file.getContentType();
if(file.getSize() != 0 && ("image/bmp".equals(fileType) ||"image/jpeg".equals(fileType) || "image/png".equals(fileType) ) ){ //限制只能上传jpeg,bmp,jpg,png格式的图片
String fileName = file.getOriginalFilename();
int formIndex = fileName.lastIndexOf(".");
String suffix = fileName.substring(formIndex, fileName.length());
String imgRealPath = "D:\\TestM\\photo"; //此处对应的自己配置的虚拟目录路径
File savePath = new File(imgRealPath);
if(!savePath.exists()){
savePath.mkdir();
}
InputStream input = file.getInputStream();
Users user = userService.getUserById(Users.class, userId);
if(null != user){
user.setPhoto(user.getLoginName()+suffix); //在数据库中保存图片名字(图片url)
userService.updateUser(user);
request.getSession().removeAttribute(Contance.Session.SESSION_USER);
request.getSession().setAttribute(Contance.Session.SESSION_USER,user);
OutputStream output = new FileOutputStream(imgRealPath+File.separator+user.getLoginName()+suffix);
int b = 0;
while((b = input.read()) != -1){
output.write(b);
}
output.close();
input.close();
map.put("upload", "success");
map.put("photoUrl", user.getPhoto());
}
}else{
map.put("upload", "failed");
}
return map;
}
5、显示图片:
在第二步,和第三步中已标注出,显示图片应该注意的路径。因为配置的虚拟路径的path=“/photo”,所以在读取图片时,只需要读 /photo/存在数据库中的图片url 即可。
注意: 要在 spring-mvc.xml中配置
<!-- 文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
否则不能支持文件上传
相关推荐
在现代Web应用中,文件上传是一项常见的功能,它允许用户上传图片、文档等资源到服务器。本示例探讨的是如何利用Spring MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有...
在本篇文档中,我们主要探讨了使用Spring MVC和Ajax技术实现导出和导入XML文件的功能。这一技术在Web开发中十分常见,用于在客户端与服务器之间传输数据,且常常用于文件操作场景。 首先,我们来看文档中提及的导入...
- **事件绑定**:使用`addEventListener`或`attachEvent`为`a`标签添加`click`事件监听器,当点击时触发文件选择并调用`Ajax`进行上传。 综上所述,结合`SpringMVC`和`Ajax`的文件上传解决方案能提供流畅的用户...
在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...
在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...
SpringMVC+Ajax+FormData 上传图片代码实例详解 在本篇文章中,我们将详细介绍如何使用 SpringMVC、Ajax 和 FormData 实现图片上传的代码实例。本文通过示例代码详细介绍了上传图片的过程,对大家的学习或者工作...
在本文中,我们将深入探讨如何在Spring MVC框架中实现图片上传功能。Spring MVC是一个流行的Java Web开发框架,它提供了一种模块化的方式来构建Web应用程序,包括处理表单数据和文件上传。在这里,我们重点关注如何...
在本文中,我们将深入探讨如何使用SpringMVC和Ajax实现异步上传图片并实时显示的功能。这个技术组合常用于Web应用开发中,提供流畅的用户体验,避免页面刷新带来的不便。 首先,SpringMVC是Spring框架的一部分,专...
2. **处理请求**: 当用户提交包含图片的表单时,Ajax会将文件作为FormData对象发送到Controller的URL。Controller接收到请求后,会将MultipartFile对象转换为实际的文件,存储在服务器的指定目录下。 3. **错误处理...
在`handleFileUpload`方法中,你可以处理上传的文件,例如将其保存到服务器的某个目录,或者进行其他业务逻辑。记得检查文件大小和类型,以防止恶意文件上传。 六、安全性和优化 为了提高安全性,确保对上传文件...
总之,"java+ajax上传文件带进度条"涉及到的技术点包括Ajax请求、FormData、XMLHttpRequest或fetch API、Java后端的文件处理、Multipart解析、安全策略以及前端的进度条UI设计。实现这一功能需要前后端的协同工作,...
本示例将探讨如何结合Spring MVC和Ajax技术实现一个支持文本域和文件域的表单上传功能,同时利用ajaxfileupload.js插件来优化用户体验。让我们深入研究这个过程。 首先,`SpringMVC_Upload`这个压缩包很可能包含了...
在IT行业中,SpringMVC和Ajax是两种广泛使用的技术,它们在构建现代Web应用程序时起着至关重要的作用。本教程将深入探讨如何结合SpringMVC和Ajax实现文件上传功能。 首先,SpringMVC是Spring框架的一部分,它是一个...
在本文中,我们将深入探讨如何使用Spring MVC和Bootstrap框架实现一个具有进度条功能的文件上传示例。这个功能对于提供用户友好的Web应用至关重要,因为它可以让用户了解文件上传的进度,提升用户体验。 首先,我们...
1. 接收请求:在Java后端,通常使用Servlet或者Spring MVC的Controller来接收Ajax请求,解析请求参数获取图片数据。 2. 图片存储:后端需要将接收到的图片数据写入到服务器的某个目录,或者存入数据库,如MySQL、...
在Spring MVC框架中,集成jQuery插件实现Ajax上传图片和文件是一种常见的需求,尤其是在现代Web应用中,这种异步上传方式能提供更好的用户体验。本文将详细介绍如何在Spring MVC项目中集成Ajax上传功能,并重点关注...
利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 1.导入组件并准备静态脚本 <groupId>commons-fileupload <artifactId>commons-fileupload <version>1.3.2 <h1>Ajax 文件上载 <...
无刷新上传图片的核心是利用AJAX的异步特性,用户选择图片后,前端通过JavaScript读取文件内容,然后使用XMLHttpRequest对象将图片数据发送到后台服务器。服务器接收到数据后进行处理(如存储、缩略图生成等),最后...
当用户需要上传大文件时,一个带有进度条的上传机制可以显著提升用户体验,因为它能让用户知道文件上传的状态,避免了未知等待的焦虑感。本教程将详细介绍如何使用Java后端和Ajax前端实现带进度条的文件上传,并提供...
在本文中,我们将探讨如何使用Spring MVC和Ajax技术实现文件上传,并且在上传过程中展示进度条。这个功能对于用户交互性非常关键,因为它提供了更好的用户体验,让用户知道文件上传的状态。 首先,让我们从前端部分...