@RequestMapping(value = "/save.do", method = RequestMethod.POST)
    public String saveDriver(
            @RequestParam(value = "photo", required = false) MultipartFile filedata,
            Driver driver, Model model) {

trimDriver(driver);
        model.addAttribute(driver);
        // 判断图片大小是否大于2M
        if (filedata.getSize() > Constant.UPLOAD_PHOTO_SIZE) {
            model.addAttribute("isSaveSuccess", false);
            IMessage msg = new Message("MSG_YS030_002", MsgTypeEnum.INFO, null);
            model.addAttribute("msg", msg.toString());
            return "ys030/YS033";
        }
        // 判断司机是否已存在
        if (this.ys030Service.isExist(driver.getOrganizationId(),
                driver.getIdCardNumber(), null)) {
            model.addAttribute("isSaveSuccess", false);
            IMessage msg = new Message("ERR_YS030_003", MsgTypeEnum.ERROR, null);
            model.addAttribute("msg", msg.toString());
            return "ys030/YS033";
        }
        // 保存相对路径到数据库 图片写入服务器
        if (filedata != null && !filedata.isEmpty()) {
            // 获取图片的文件名
            String fileName = filedata.getOriginalFilename();
            // 获取图片的扩展名
            String extensionName = fileName
                    .substring(fileName.lastIndexOf(".") + 1);
            // 新的图片文件名 = 获取时间戳+"."图片扩展名
            String newFileName = String.valueOf(System.currentTimeMillis())
                    + "." + extensionName;

try {
                driver.setPicUrl(newFileName);
                saveFile(newFileName, filedata);

} catch (Exception e) {
                log.error("上传图片失败.", e);
                model.addAttribute("isSaveSuccess", false);
                IMessage msg = new Message("MSG_YS030_001", MsgTypeEnum.INFO,
                        null);
                model.addAttribute("msg", msg.toString());
                return "ys030/YS033";
            }
        }
        this.ys030Service.save(driver);
        model.addAttribute(driver);
        model.addAttribute("isSaveSuccess", true);
        return "ys030/YS033";
    }

private void saveFile(String newFileName, MultipartFile filedata) {
        // TODO Auto-generated method stub
        // 根据配置文件获取服务器图片存放路径
        String picDir = "";
        try {
        //这里封装了读取配置文件的方法 配置文件中有图片的存放地址和获取地址
            Properties properties = PropertiesUtil
                    .getProperties("configure/driverpicurl.properties");
            picDir = properties.getProperty("savePicUrl");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String saveFilePath = picDir;

/* 构建文件目录 */
        File fileDir = new File(saveFilePath);
        if (!fileDir.exists()) {
            fileDir.mkdirs();
        }

try {
            FileOutputStream out = new FileOutputStream(saveFilePath + "\\"
                    + newFileName);
            // 写入文件
            out.write(filedata.getBytes());
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

}

private void deleteFile(String oldPicName) {
        // TODO Auto-generated method stub
        String picDir = "";
        try {
            Properties properties = PropertiesUtil
                    .getProperties("configure/driverpicurl.properties");
            picDir = properties.getProperty("savePicUrl");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        /* 构建文件目录 */
        File fileDir = new File(picDir+"/"+oldPicName);
        if (fileDir.exists()) {
            //把修改之前的图片删除 以免太多没用的图片占据空间
            fileDir.delete();
        }

}

这是properties 文件
#============================================================================
#savePicUrl=D:/tomcat/apache-tomcat-7.0.39/webapps/driverPic 服务器图片存放路径(服务器绝对路径与工程同目录)
#getPicUrl=http://xxx.xxx.xx.xxx:8080/driverPic/ 服务器图片获取地址
#============================================================================
savePicUrl=D:/tomcat/apache-tomcat-7.0.39/webapps/driverPic
getPicUrl=http://xxx.xxx.xx.xxx:8080/driverPic/

SpringMVC 上传图片保存到服务器 同时更改图片名称保存至数据库的更多相关文章

  1. django上传图片简单验证以及自动修改图片名称

    django实现文件(图片)上传之后自动修改名称以及页面上传图片时的各种提醒: 1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在s ...

  2. 点滴积累【C#】---C#实现上传word将路径保存到数据库,文件保存到服务器。并且按照名称读取服务器的word

    效果: 1. . . 数据库: 思路: 上传:先获取word物理地址,然后根据文件的类型判断,然后再保存到相应的文件夹下,再把路径插入到数据库中. 读取:首先根据输入的文件名字在数据库中查找出来文件的 ...

  3. PHP将图片转base64编码以及base64图片转换为图片并保存代码

    图片转base64编码 /*图片转换为 base64格式编码*/ $img = 'uploads/01.png'; $base64_img = base64EncodeImage($img); ech ...

  4. PHP的图片转base64,base64图片转换为图片并保存代码

    打卡记录 1. 图片转base64代码 /*图片转换为 base64格式编码*/ $img = 'images/avatar.jpg'; $base64_img = base64EncodeImage ...

  5. summernote图片上传功能保存到服务器指定文件夹+php代码+java方法

    1.summernote富文本编辑器 summernote是一款基于bootstrap的富文本编辑器,是一款十分好用的文本编辑器,还附带有图片和文件上传功能. 那么在我们网站中想吧这个图片上传到服务器 ...

  6. SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest

    原文地址:https://blog.csdn.net/chenchunlin526/article/details/70945877 SpringMVC上传图片总结(1)---常规方法进行图片上传,使 ...

  7. Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)

    环境:.NET Framework 3.5 服务: IIS EXpress托管 WCF服务程序 配置:Web.config <!--<connectionStrings> <a ...

  8. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  9. php实现调用微信上传照片然后保存至服务器与数据库

    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>    <s ...

随机推荐

  1. 关于利用HashSet,split,deleteCharAt等方法详解

    1.首先了解一下HashSet的原理: Set接口  Set是对数学上集的抽象,Set中不包含重复的元素.如何界定是否是重复元素?Set最多可含一个null元素;对于任意的非null元素e1和e2,都 ...

  2. 牛B的swift屏幕旋转经验终结者(OC统一思路)

    牛B的swift屏幕旋转经验终结者(OC统一思路) 1.AppDelegate (1)定义变量 var blockRotation: Bool = false (2)定义方法 Swift代码 func ...

  3. Java中抽象类与接口的比较

    一.基本概念 抽象类:表示这个对象是什么:比如 男人.女人这两个类,他们的抽象类是人,说明男人.女人是人: 接口:表示这个对象能做什么:比如人可以吃东西,狗也可以吃东西,将“吃东西”定义为一个接口,让 ...

  4. Co. - Microsoft - Windows - Dos命令

    DOS命令 cd .. 是进入上一层目录,cd \ 是进入根目录 我们来重申下%~dp0和%cd%的区别, %cd%和%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同: %cd ...

  5. Struts2的动态方法,及result跳转方式,全局结果以及默认的action的配置

    Action动态方法的调用 首先我们需要在struts.xml中去配置一个常量值如下 那么去哪找呢?找到Struts-core.jar并打开 method属性 <action name=&quo ...

  6. Vue 2.0 组件库总结

    UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...

  7. mongo数据库相关目录

    mongodb的docker化安装 mongodb的windows系统下安装 grafana使用Prometheus数据源监控mongo数据库 mongodb副本集的docker化安装 mongodb ...

  8. Angular : 响应式编程, 组件间通信, 表单

    Angular 响应式编程相关 ------------------------------------------------------------------------------------ ...

  9. 深入理解is_callable和method_exists

    一.函数解析 is_callable() 定义: (PHP 4 >= 4.0.6, PHP 5, PHP 7) is_callable — 检测参数是否为合法的可调用结构 bool is_cal ...

  10. 初学tiny4412

    1.解压友善之臂提供的uboot make tiny4412_config make 然后将sd卡插到电脑上,编辑虚拟机,选择对应的usb口(usb3.0兼容),如果没有usb3.0,可能是虚拟机版本 ...