分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

ssm 框架下的上传文件功能

发布时间:2023-09-06 02:04责任编辑:熊小新关键词:暂无标签
这两天在弄上传文件(图片或视频)的功能 ,特记录于此,其核心是字符串的拼接路径。要求是:服务器上(Tomcat为例)保存上传的图片或视频,数据库中插入相对路径。数据库中的A表设置一个字段 img_dir,用于存取文件路径,每次是以更新的形式拼接到原有的字段中。具体的可以debug ??controller看一下,字符串每一步的情况。(我之前是参考了某位大神的博客,记不清地址了,抱歉!!)
主要逻辑如下:
controller:
/**

  • 上传文件*/
    @RequestMapping("/onefile")
    br/>*/
    @RequestMapping("/onefile")
    HttpServletRequest request, Model model, AAccidentManagement management)
    {

    // 传入一个事故IDString accidentID = request.getParameter("accidentID");accidentID = "00520180509002";if (StringUtils.isEmpty(accidentID)){ ???model.addAttribute("msg", "事故ID为空"); ???model.addAttribute("code", 1); ???return model;}if (file == null){ ???model.addAttribute("msg", "上传失败:文件为空"); ???model.addAttribute("code", 111); ???return model;}// 获得原始文件名String fileName = file.getOriginalFilename();System.out.println("原文件名:" + fileName);// 获取上传文件扩展名String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());// 对扩展名进行小写转换fileExt = fileExt.toLowerCase();// 图片文件大小过滤if (!"jpg".equals(fileExt) && !"png".equals(fileExt) && !"mp4".equals(fileExt)){ ???model.addAttribute("msg", "上传失败:无效的图片/视频类型"); ???model.addAttribute("code", 111); ???return model;}// long fileSize = file.getSize();// if (fileSize > (500 * 1024))// {// model.addAttribute("msg", "上传失败:文件大小不能超过500K");// model.addAttribute("code", 111);// return model;// }// 新文件名String newFileName = UUID.randomUUID() + fileName;String realPath = request.getServletContext().getRealPath("/");String realPathParent = (new File(realPath)).getParent();// 上传位置String path = realPathParent + "/img/"; // 设定文件保存的目录File f = new File(path);if (!f.exists()) ???f.mkdirs();if (!file.isEmpty()){ ???try ???{ ???????FileOutputStream fos = new FileOutputStream(path + newFileName); ???????InputStream in = file.getInputStream(); ???????int b = 0; ???????while ((b = in.read()) != -1) ???????{ ???????????fos.write(b); ???????} ???????fos.close(); ???????in.close(); ???} catch (Exception e) ???{ ???????e.printStackTrace(); ???}}management.setAccidentID(accidentID);List<String> strList = new ArrayList<String>();List<String> mapList = new ArrayList<String>();List<String> listMap = new ArrayList<String>();String pathNew = "/img/" + newFileName;// 往数据库中插入(路径拼接)数组String strMap = uploadService.selectPaths(management);if (StringUtils.isEmpty(strMap)){ ???strList.add(pathNew);} else{ ???String[] str1 = strMap.split(","); ???for (String list : str1) ???{ ???????strList.add(list); ???} ???strList.add(pathNew);}for (String map : strList){ ???mapList.add(map);}// 集合System.out.println("上传图片到:" + path + newFileName);String imgDir = mapList.toString().replace("[", "").replace("]", "");management.setImgDir(imgDir);model.addAttribute("code", uploadService.updatePath(management) > 0 ? 0 : 1);// 返回所有图片的绝对路径for (String map : strList){ ???fileExt=map.substring(map.indexOf(".")).replace("]", ""); ???switch (fileExt) ???{ ???case ".jpg": ???????map = map.substring(map.indexOf("img") - 1, map.indexOf(".jpg") + 4); ???????break; ???case ".png": ???????map = map.substring(map.indexOf("img") - 1, map.indexOf(".png") + 4); ???????break; ???case ".mp4": ???????map = map.substring(map.indexOf("img") - 1, map.indexOf(".mp4") + 4); ???????break; ???default: ???????break; ???} ???// 封装图片显示路径(根据当前访问的客户端请求的地址来封装) ???String request_path = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort(); ???listMap.add(request_path + map);}imgDir = listMap.toString().replace("[", "").replace("]", "");model.addAttribute("imgDir", imgDir);model.addAttribute("code", 99);return null;

    }

service:

?????????????

dao:

serviceImpl:

xml:

ssm 框架下的上传文件功能

原文地址:http://blog.51cto.com/12237592/2144157

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved