`

spring mvc +ajax+formdata 上传图片到虚拟目录(防止重新部署时,上传图片丢失)

 
阅读更多

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>

否则不能支持文件上传

 

分享到:
评论

相关推荐

    spring mvc+ajax 文件上传

    在现代Web应用中,文件上传是一项常见的功能,它允许用户上传图片、文档等资源到服务器。本示例探讨的是如何利用Spring MVC后端框架与前端的Ajax技术来实现高效的文件上传,相较于传统的表单提交方式,这种方法具有...

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

    在本篇文档中,我们主要探讨了使用Spring MVC和Ajax技术实现导出和导入XML文件的功能。这一技术在Web开发中十分常见,用于在客户端与服务器之间传输数据,且常常用于文件操作场景。 首先,我们来看文档中提及的导入...

    SpringMVC+Ajax异步文件上传

    - **事件绑定**:使用`addEventListener`或`attachEvent`为`a`标签添加`click`事件监听器,当点击时触发文件选择并调用`Ajax`进行上传。 综上所述,结合`SpringMVC`和`Ajax`的文件上传解决方案能提供流畅的用户...

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

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

    spring mvc上传文件

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

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

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

    Spring MVC 图片上传有插件+jsp+后台

    在本文中,我们将深入探讨如何在Spring MVC框架中实现图片上传功能。Spring MVC是一个流行的Java Web开发框架,它提供了一种模块化的方式来构建Web应用程序,包括处理表单数据和文件上传。在这里,我们重点关注如何...

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

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

    上传图片springMVC和ajax

    2. **处理请求**: 当用户提交包含图片的表单时,Ajax会将文件作为FormData对象发送到Controller的URL。Controller接收到请求后,会将MultipartFile对象转换为实际的文件,存储在服务器的指定目录下。 3. **错误处理...

    利用SpringMVC和Ajax实现文件上传功能

    在`handleFileUpload`方法中,你可以处理上传的文件,例如将其保存到服务器的某个目录,或者进行其他业务逻辑。记得检查文件大小和类型,以防止恶意文件上传。 六、安全性和优化 为了提高安全性,确保对上传文件...

    java+ajax上传文件带进度条

    总之,"java+ajax上传文件带进度条"涉及到的技术点包括Ajax请求、FormData、XMLHttpRequest或fetch API、Java后端的文件处理、Multipart解析、安全策略以及前端的进度条UI设计。实现这一功能需要前后端的协同工作,...

    springmvc+ajax带有文本域进行文件上传

    本示例将探讨如何结合Spring MVC和Ajax技术实现一个支持文本域和文件域的表单上传功能,同时利用ajaxfileupload.js插件来优化用户体验。让我们深入研究这个过程。 首先,`SpringMVC_Upload`这个压缩包很可能包含了...

    springmvc+ajax上传例子

    在IT行业中,SpringMVC和Ajax是两种广泛使用的技术,它们在构建现代Web应用程序时起着至关重要的作用。本教程将深入探讨如何结合SpringMVC和Ajax实现文件上传功能。 首先,SpringMVC是Spring框架的一部分,它是一个...

    spring MVC + bootstrap实现文件上传示例(带进度条)

    在本文中,我们将深入探讨如何使用Spring MVC和Bootstrap框架实现一个具有进度条功能的文件上传示例。这个功能对于提供用户友好的Web应用至关重要,因为它可以让用户了解文件上传的进度,提升用户体验。 首先,我们...

    jsp Ajax图片上传

    1. 接收请求:在Java后端,通常使用Servlet或者Spring MVC的Controller来接收Ajax请求,解析请求参数获取图片数据。 2. 图片存储:后端需要将接收到的图片数据写入到服务器的某个目录,或者存入数据库,如MySQL、...

    spingmvc集成插件ajax上传图片文件

    在Spring MVC框架中,集成jQuery插件实现Ajax上传图片和文件是一种常见的需求,尤其是在现代Web应用中,这种异步上传方式能提供更好的用户体验。本文将详细介绍如何在Spring MVC项目中集成Ajax上传功能,并重点关注...

    利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能

    利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 1.导入组件并准备静态脚本 &lt;groupId&gt;commons-fileupload &lt;artifactId&gt;commons-fileupload &lt;version&gt;1.3.2 &lt;h1&gt;Ajax 文件上载 &lt;...

    ajax,java实现无刷新上传图片源码

    无刷新上传图片的核心是利用AJAX的异步特性,用户选择图片后,前端通过JavaScript读取文件内容,然后使用XMLHttpRequest对象将图片数据发送到后台服务器。服务器接收到数据后进行处理(如存储、缩略图生成等),最后...

    带进度条的文件上传(java+ajax,附源码)

    当用户需要上传大文件时,一个带有进度条的上传机制可以显著提升用户体验,因为它能让用户知道文件上传的状态,避免了未知等待的焦虑感。本教程将详细介绍如何使用Java后端和Ajax前端实现带进度条的文件上传,并提供...

    springMVC+ajax实现文件上传且带进度条实例

    在本文中,我们将探讨如何使用Spring MVC和Ajax技术实现文件上传,并且在上传过程中展示进度条。这个功能对于用户交互性非常关键,因为它提供了更好的用户体验,让用户知道文件上传的状态。 首先,让我们从前端部分...

Global site tag (gtag.js) - Google Analytics