使用springmvc+ajax+formdata上图片(上传完成,立即回显),图片存放在服务器中,在数据中存入图片在服务器中的url,以获取图片。
html:
<div class="userPhoto" style="width: 800px">
<form id="formUp" action="" enctype="multipart/form-data">
<input type="hidden" id="userId" value="${SessionUser.id }" name="userId" />
<table style="width: 800px">
<tr>
<td width="150px"><img id="showPhoto" alt="暂无图片" src="${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>
jquery:
$("#button_submit").click(function(){
$("#photoUp").click();
});
$("#photoUp").change(function(){
var formData = new FormData($("#formUp")[0]);
$.ajax({
url:"userPhotoUplaod.do",
type:"post",
data : formData,
async : false,
cache : false, //cache设置为false,上传文件不需要缓存。
contentType : false, //contentType设置为false。因为是由<form>表单构造的FormData对象,且已经声 //明了属性enctype="multipart/form-data",所以这里设置为false。
processData : false, //processData设置为false。因为data值是FormData对象,不需要对数据做处理。
success : function(data) {
if(data.upload == "success"){
$("#showPhoto").attr("src",data.photoUrl);
$("#showPhoto").attr("width","150");
$("#showPhoto").attr("height","150");
/* $("#showPhoto").attr("src","showImages.do?name=image&"+new Date().toTimeString());
$("#showPhoto").attr("width","150");
$("#showPhoto").attr("height","150"); */
}
},
});
});
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 path = request.getServletContext().getRealPath(File.separator);
File savePath = new File(path+File.separator+"photo");
if(!savePath.exists()){
savePath.mkdir();
}
InputStream input = file.getInputStream();
Users user = userService.getUserById(Users.class,userId);
if(null != user){
user.setPhoto(request.getContextPath()+"/photo"+"/"+user.getLoginName()+suffix);
@SuppressWarnings("unused")
boolean flag = userService.updateUser(user);
request.getSession().removeAttribute(Contance.Session.SESSION_USER);
request.getSession().setAttribute(Contance.Session.SESSION_USER, user);
OutputStream output = new FileOutputStream(savePath+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;
}
相关推荐
本示例探讨的是如何利用Spring MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有无刷新、用户体验更佳的优势。以下是关于这个主题的详细讲解。 首先,我们需要理解Spring...
总结来说,本文详细介绍了Spring MVC与Ajax技术结合使用来实现文件导入导出功能的过程,重点强调了在前后端交互过程中对于文件类型校验、上传方式选择以及安全性考虑的重要性,并且对相关代码段进行了分析和讲解。...
在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件域的相关知识。 1. **SpringMVC中的文件上传** - **MultipartFile接口**:`SpringMVC`提供了一个名为...
同时,Spring MVC的`CommonsMultipartResolver`可以帮助我们在服务器端处理文件上传,它将`MultipartFile`转换为可存储的文件。 在ECLIPSE MAVEN工程中,`pom.xml`文件定义了项目的依赖管理,包括Spring MVC、...
在IT领域,尤其是在Web开发中,"PHP+jQuery+Ajax多图片上传"是一个常见的功能需求。这个技术组合允许用户在不刷新整个网页的情况下,通过前端(JavaScript库jQuery)与后端(服务器端语言PHP)进行交互,实现动态的...
三、PHP+AJAX文件上传流程 1. **前端HTML表单**:创建一个包含多个`<input type="file">`的表单,用户可以选取多张图片。使用JavaScript获取这些文件,并将其存储在一个数组中。 2. **AJAX事件监听**:监听表单的...
本文实例讲述了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json。分享给大家供大家参考,具体如下: 知识点总结 1.json格式标准 { 'key':"value" } {"state":"1","msg":"\u7b80\u5386\u6295\u...
它将逐个处理文件输入框,读取每张图片并使用Ajax发送到服务器。在服务器端,图片通常会被重命名以确保唯一性,这里使用了一个时间戳加上随机数的方法。在实际应用中,可能还需要考虑文件大小限制、文件类型检查以及...
总的来说,PHP+jQuery+Ajax多图片上传插件是构建高效、易用的文件上传功能的理想选择。它通过分离前后端任务,实现了无刷新的用户体验,同时利用Ajax提供了流畅的进度反馈。在实际开发中,开发者可以根据项目需求...
当用户选择图片并点击上传按钮后,JavaScript会将图片文件作为FormData对象发送到后端,并在成功上传后更新预览图片的`src`属性,从而实现图片的预览。 总结,通过Spring Boot实现图片上传和回显,主要包括以下步骤...
SpringMVC+Ajax+FormData 上传图片代码实例详解 在本篇文章中,我们将详细介绍如何使用 SpringMVC、Ajax 和 FormData 实现图片上传的代码实例。本文通过示例代码详细介绍了上传图片的过程,对大家的学习或者工作...
接着,使用jQuery的`ajax`方法或者`formdata`插件来处理异步文件上传,这样可以提供更好的用户体验,因为文件上传不会导致页面刷新。 ```html 上传 ``` 使用jQuery进行异步上传的示例: ```javascript $("#...
在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...
在ASP.NET中,可以通过HTML5的FormData、Ajax和WebAPI等技术实现异步上传。 6. 类库大全:这可能是指项目中包含的各种常用的.NET类库,如NuGet包,这些类库可以帮助开发者快速实现特定功能,比如验证、日志、缓存等...
在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...
在本文中,我们将深入探讨如何使用SpringMVC和Ajax实现异步上传图片并实时显示的功能。这个技术组合常用于Web应用开发中,提供流畅的用户体验,避免页面刷新带来的不便。 首先,SpringMVC是Spring框架的一部分,专...
以上就是一个基本的PHP+jQuery+Ajax实现的多上传按钮单文件上传功能的概述。在实际项目中,你可能还需要添加更多的功能,比如文件类型检查、大小限制、进度条显示、错误处理等,以提供更完善的用户体验。同时,为了...
在ASP.NET MVC框架中,开发Web应用程序时,我们经常需要处理用户上传的附件。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,如表格、下拉框、对话框等,可以方便地与ASP.NET MVC结合使用,实现界面的美化和交互...