使用FormData进行Ajax请求异步上传图片案例

本文介绍了如何在SSM框架下使用Ajax和FormData对象异步上传图片,详细讲解了从dao到controller的处理流程,包括文件上传、路径处理、数据库操作等步骤,以及前端HTML和JavaScript的实现细节。
摘要由CSDN通过智能技术生成

工作时遇到一个对轮播图管理的需求,开发过程遇到些问题,总算顺利解决,记录下来供大家参考。原项目是基于SSM框架搭建的,现将Ajax图片上传部分分享如下:

说明:

1. 传统的表单序列化,即通过$('#fm').serialize()可以对form表单进行序列化,从而将form表单中的所有参数传递到服务端,但该方法只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。

2. 本文采取的方式是通过FormData对象实现的。如今主流浏览器都开始支持一个叫做FormData的对象,有了这个FormData,我们就可以轻松地使用Ajax方式进行文件上传了。

FormData是什么呢?

XMLHttpRequest Level 2添加了一个新的接口FormData,利用FormData对象我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的Send()方法来异步的提交这个"表单"。比起普通的ajax,使FormData的最大优点就是我们可以异步上传一个二进制文件。
所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。

1.dao层代码

<!--新增照片 -->

   <insert id="addImage" parameterType="Image">

             <!--自动生成id(string类型) -->

            <selectKey keyProperty="id" resultType="string" order="BEFORE">

                    SELECTUUID()

            </selectKey>

             insertinto image(id,imgName,path,uploadTime,uploader,type,displayOrder)

             values(#{id},#{imgName},#{path},#{uploadTime},#{uploader},#{type},#{displayOrder})

   </insert>

2.service层没什么逻辑,代码在此省略

3.controller层代码

@Controller

@RequestMapping("/imageManage")

public class ImageController {

       @Autowired

       private ImageService imageService;

       // 新增轮播图片

       @RequestMapping("/addImage")

       @ResponseBody

       public void addImg(

                    @RequestParam(value ="file", required =false) MultipartFile file,

                    @RequestParam(value ="uploader", required =false) String uploader,

                     HttpServletRequestrequest) {

              String type =request.getParameter("type");

              String order =request.getParameter("order");

              Integer displayOrder =Integer.parseInt(order);

              String DirectoryName ="/upload";

              Image image =new Image();

             if (uploader !=null) {

                     image.setUploader(uploader);

              }

              image.setUploadTime(DateUtil.DateToStr(DateUtil.yyyy_MM_dd_HH_mm_ssnew Date()));

              image.setType(type);


             //System.out.println("displayOrder"+ displayOrder.getClass().getName() + displayOrder);

              String fileName =null;

             if (file !=null) {

                    //取得当前上传文件的文件名称

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值