`

spring mvc +ajax+formdata 上传图片并回显

 
阅读更多

使用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 MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有无刷新、用户体验更佳的优势。以下是关于这个主题的详细讲解。 首先,我们需要理解Spring...

    spring mvc+ajax 导出导入xml文件功能实现和整理

    总结来说,本文详细介绍了Spring MVC与Ajax技术结合使用来实现文件导入导出功能的过程,重点强调了在前后端交互过程中对于文件类型校验、上传方式选择以及安全性考虑的重要性,并且对相关代码段进行了分析和讲解。...

    SpringMVC+Ajax异步文件上传

    在本教程中,我们将探讨如何结合`SpringMVC`和`Ajax`来实现异步文件上传,并讨论短视频背景以及`a`标签绑定文件域的相关知识。 1. **SpringMVC中的文件上传** - **MultipartFile接口**:`SpringMVC`提供了一个名为...

    spring mvc html5带进度条上传的例子.zip

    同时,Spring MVC的`CommonsMultipartResolver`可以帮助我们在服务器端处理文件上传,它将`MultipartFile`转换为可存储的文件。 在ECLIPSE MAVEN工程中,`pom.xml`文件定义了项目的依赖管理,包括Spring MVC、...

    PHP+jQuery+Ajax多图片上传

    在IT领域,尤其是在Web开发中,"PHP+jQuery+Ajax多图片上传"是一个常见的功能需求。这个技术组合允许用户在不刷新整个网页的情况下,通过前端(JavaScript库jQuery)与后端(服务器端语言PHP)进行交互,实现动态的...

    php+ajax批量上传图片,php+ajax上传图片,ajax+php上传图片,批量上传,批量上传图片

    三、PHP+AJAX文件上传流程 1. **前端HTML表单**:创建一个包含多个`&lt;input type="file"&gt;`的表单,用户可以选取多张图片。使用JavaScript获取这些文件,并将其存储在一个数组中。 2. **AJAX事件监听**:监听表单的...

    thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例

    本文实例讲述了thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json。分享给大家供大家参考,具体如下: 知识点总结 1.json格式标准 { 'key':"value" } {"state":"1","msg":"\u7b80\u5386\u6295\u...

    JQuery+ajax实现批量上传图片

    它将逐个处理文件输入框,读取每张图片并使用Ajax发送到服务器。在服务器端,图片通常会被重命名以确保唯一性,这里使用了一个时间戳加上随机数的方法。在实际应用中,可能还需要考虑文件大小限制、文件类型检查以及...

    PHP多文件上传插件,PHP+jQuery+Ajax多图片上传

    总的来说,PHP+jQuery+Ajax多图片上传插件是构建高效、易用的文件上传功能的理想选择。它通过分离前后端任务,实现了无刷新的用户体验,同时利用Ajax提供了流畅的进度反馈。在实际开发中,开发者可以根据项目需求...

    springboot上传图片并回显

    当用户选择图片并点击上传按钮后,JavaScript会将图片文件作为FormData对象发送到后端,并在成功上传后更新预览图片的`src`属性,从而实现图片的预览。 总结,通过Spring Boot实现图片上传和回显,主要包括以下步骤...

    springmvc+ajax+formdata上传图片代码实例

    SpringMVC+Ajax+FormData 上传图片代码实例详解 在本篇文章中,我们将详细介绍如何使用 SpringMVC、Ajax 和 FormData 实现图片上传的代码实例。本文通过示例代码详细介绍了上传图片的过程,对大家的学习或者工作...

    asp.net mvc+jquery上传

    接着,使用jQuery的`ajax`方法或者`formdata`插件来处理异步文件上传,这样可以提供更好的用户体验,因为文件上传不会导致页面刷新。 ```html 上传 ``` 使用jQuery进行异步上传的示例: ```javascript $("#...

    spring mvc ajax异步文件的上传和普通文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...

    EF+MVC+增删改查+webapi+异步上传文件+类库大全

    在ASP.NET中,可以通过HTML5的FormData、Ajax和WebAPI等技术实现异步上传。 6. 类库大全:这可能是指项目中包含的各种常用的.NET类库,如NuGet包,这些类库可以帮助开发者快速实现特定功能,比如验证、日志、缓存等...

    spring mvc上传文件

    在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...

    SpringMVC+Ajax异步上传图片并显示(源码)

    在本文中,我们将深入探讨如何使用SpringMVC和Ajax实现异步上传图片并实时显示的功能。这个技术组合常用于Web应用开发中,提供流畅的用户体验,避免页面刷新带来的不便。 首先,SpringMVC是Spring框架的一部分,专...

    PHP+jQuery+Ajax仿淘宝多上传按钮单文件上传

    以上就是一个基本的PHP+jQuery+Ajax实现的多上传按钮单文件上传功能的概述。在实际项目中,你可能还需要添加更多的功能,比如文件类型检查、大小限制、进度条显示、错误处理等,以提供更完善的用户体验。同时,为了...

    asp.net mvc+easyui附件上传

    在ASP.NET MVC框架中,开发Web应用程序时,我们经常需要处理用户上传的附件。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,如表格、下拉框、对话框等,可以方便地与ASP.NET MVC结合使用,实现界面的美化和交互...

Global site tag (gtag.js) - Google Analytics