SpringMVC+Spring+MyBatis 整合与图片上传简单示例


/<form>

3、创建Controller类

package com.cenobitor.controller;

import com.cenobitor.service.UploadFileService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;

@Controller

public class UploadFileController {

@Autowired

private UploadFileService uploadFileService;

//图片上传用MultipartFile接收文件,其中参数名要表单中的文件名一致

@RequestMapping("/uploadpic")

public String uploadPic(MultipartFile picFile) throws Exception {

String picUrl = uploadFileService.UploadPic(picFile);

if (picUrl == null){

return "redirect:error.html";

}

//重定向预览图片

return "redirect:"+picUrl;

}

}

4、创建service层

public interface UploadFileService {

public String UploadPic(MultipartFile picFile);

}

package com.cenobitor.service.impl;

import com.cenobitor.mapper.PicMapper;

import com.cenobitor.pojo.Pic;

import com.cenobitor.service.UploadFileService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;

import java.io.IOException;

import java.util.UUID;

@Service

@Transactional

public class UploadFileServiceImpl implements UploadFileService {

@Autowired

private PicMapper picMapper;

@Override

public String UploadPic(MultipartFile picFile) {

try {

// 图片新名字

String name = UUID.randomUUID().toString();

// 图片原名字

String oldName = picFile.getOriginalFilename();

// 后缀名

String exeName = oldName.substring(oldName.lastIndexOf("."));

//保存图片路径为绝对路径

File pic = new File("/Users/Shared/jpg/" + name + exeName);

// 保存图片到本地磁盘

picFile.transferTo(pic);

//保存数据到数据库中

picMapper.add(new Pic(name,"../jpg/"+name+exeName));

return "/jpg/"+name+exeName;

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

}

5、创建dao层(mapper层)

package com.cenobitor.mapper;

import com.cenobitor.pojo.Pic;

public interface PicMapper {

//添加图片

int add(Pic pic);

}

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper>

<insert>

insert into

pic(name,url)

values

(#{name},#{url});

6、项目的目录结构

7、效果