当前位置: 首页 > news >正文

中国建设安全协会网站河北建设工程信息网天行建和园

中国建设安全协会网站,河北建设工程信息网天行建和园,网站建设 参照 标准规范,手机怎样制作个人网站从头开始搭建一个SpringBoot项目--SpringBoot文件的上传前言流程分析代码结构代码详情UploadFileInfo.classUploadController.classUploadDao.classUploadDao.xmlUploadServices.classUploadServicesImpl.class测试下载示例前言 文件的上传和下载是很多系统必备的功能#xf… 从头开始搭建一个SpringBoot项目--SpringBoot文件的上传前言流程分析代码结构代码详情UploadFileInfo.classUploadController.classUploadDao.classUploadDao.xmlUploadServices.classUploadServicesImpl.class测试下载示例前言 文件的上传和下载是很多系统必备的功能之前的一篇文章简单描述了下载那么现在我们来实现上传文件并且存储到服务器。 值得注意的是在以下的示例系统中我已经引入了SpringSecurity、Swagger、Mybatis等框架了。 详情参考 从头开始搭建一个SpringBoot项目–SpringSecurity的配置 流程分析 用户上传文件第一步肯定是选择文件然后系统接收文件并保存到服务器这一步里面我们首先要做的应该是获取此次上传信息比如上传人、上传时间、上传文件类型等等。剩下的就是需要考虑的问题是如何保存 我的意思是如何保存这个文件比如文件名称如果有两个用户上传了一个同样名字的文件那我们就让用户保存吗那肯定是不可以的。所以保存时候很重要的一点就是文件不能同名。所以这里我们保存在服务器上的文件名称最好做一个映射用户定义文件名 -- 服务器保存文件名称。这种映射关系可以保存在数据库中这样就保证了文件名的唯一性。 比如用户上传文件名称为你遭老罪了.png保存的时候用一个时间戳或者uuid 文件后缀作为该文件在服务器上的名称假设为123456789.png,然后把你遭老罪了--123456789这样的一个映射关系保存到数据库里面这样用户要按照文件名从服务器上获取该文件的时候我们也能的找到保存的时候也不会有同名的风险。 PS: 同名风险还是有的虽然很小但确实存在UUID可能生成相同时间戳可能多用户上传时一样如果需要的话保存前可以做一个文件名同名检查。如果文件名已存在则再生成一个。 上传文件的流程图的话大致是以下这样 代码 结构 代码详情 UploadFileInfo.class Setter Getter ToString NoArgsConstructor public class UploadFileInfo {ApiModelProperty(value 上传人id)int uploaderId;ApiModelProperty(value 上传人名称)String uploaderName;ApiModelProperty(value 上传人时间)String uploadTime;ApiModelProperty(value 上传文件大小)int size;ApiModelProperty(value 上传文件名称)String fileName;ApiModelProperty(value 上传文件唯一名称)String uName;ApiModelProperty(value 存储路径)String storePath;ApiModelProperty(value 文件后缀)String extension;public UploadFileInfo(UserBean userBean) {if (userBean null)throw new RuntimeException(用户为空);this.uploaderId userBean.getId();this.uploaderName userBean.getUsername();} }UploadController.class 这里面的日期工具类在我的其他文章里 主页搜索日期就可找到。 RestController Controller RequestMapping(value /upload/) Api(tags 03 上传文件 , position 3) public class UploadController {//配置文件中保存的位置Value(${root.upload.path})private String uploadPath;AutowiredUploadServices uploadServices;ApiOperation(value 上传文件测试 , notes 支持所有文件)PostMapping(value /uploadTest)public Result uploadFile(RequestParam(required true) MultipartFile file) {UploadFileInfo up getUploadInfo(file);System.out.println(up.toString());if(uploadServices.addUploadInfo(up) 0) {return ResultUtil.success(ResultCode.ERROR);}try {//将当前文件保存到服务器指定目录下的文件file.transferTo(new File(up.getStorePath()));}catch (Exception e) {e.printStackTrace();}return ResultUtil.success(ResultCode.SUCCESS);}/*** Description* Param file* Return {link UploadFileInfo}* Author 三文鱼先生* Date 2023/3/2 10:45**/public UploadFileInfo getUploadInfo(MultipartFile file) {UserBean user (UserBean) SecurityContextHolder.getContext().getAuthentication().getPrincipal();//设置上上传人基本信息UploadFileInfo uploadFileInfo new UploadFileInfo(user);//文件存储时的唯一idString uName UUID.randomUUID().toString().replaceAll(- , );//当前时间uploadFileInfo.setUploadTime(DateUtil.formatStr(new Date() , DateUtil.SecondPattern));//文件大小uploadFileInfo.setSize((int) file.getSize());String[] fileName file.getOriginalFilename().split(\\.);String extension fileName[1];//存储路径String storePath uploadPath uName . extension;//上传文件后缀uploadFileInfo.setExtension(extension);//服务器存储地址uploadFileInfo.setStorePath(storePath);//使用uuid作为文件在服务器上的名称uploadFileInfo.setUName(uName);//文件的真实名称uploadFileInfo.setFileName(fileName[0]);return uploadFileInfo;}} UploadDao.class public interface UploadDao {//添加上传文件记录信息int addUploadInfo(UploadFileInfo uploadFileInfo); }UploadDao.xml ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.demo.uploadfile.dao.UploadDaoinsert idaddUploadInfo parameterTypecom.demo.uploadfile.bean.UploadFileInfoinsert into my_file(uploaderId,uploaderName,uploadTime,size,fileName,uName,storePath,extension) values(#{uploaderId},#{uploaderName},#{uploadTime},#{size},#{fileName},#{uName},#{storePath},#{extension});/insert /mapperUploadServices.class public interface UploadServices {int addUploadInfo(UploadFileInfo uploadFileInfo); }UploadServicesImpl.class Service public class UploadServicesImpl implements UploadServices {AutowiredUploadDao uploadDao;Overridepublic int addUploadInfo(UploadFileInfo uploadFileInfo) {return uploadDao.addUploadInfo(uploadFileInfo);} }测试 下载 下载的话就比较简单了这里在之前的文章 记SpringBoot下载的两种方式在这里需要注意的应该是配置SpringSecurity配置下不拦截/file/**。 示例 图片文件可以查看后 右键自定义保存 其他文件诸如doc、excel、rar等都会直接下载。
http://www.hkea.cn/news/14458402/

相关文章:

  • 四川省建设局网站asp flash网站源码
  • 北京建设企业网站wordpress 插件代码
  • 杭州高端网站网站设计与制作是网页吗
  • 网上房地产网站北京网站定制流程
  • 有了域名怎么建设网站Ie8网站后台编辑文章
  • 谷歌官方网站宁波网站优化公司推荐
  • wordpress可以做cms吗seo短视频新地址在哪里?
  • 学做网站多长时间用python怎么做网站
  • 推广网站有什么方法建站工具有什么用
  • 百度搜索网站包含的功能微信 host 微网站模版
  • 做一个电子商务网站在哪里做爬虫 网站开发实例
  • 国内做外贸网站的有哪些建立企业网站方案
  • 个人和做网站方签合同模板做淘宝网站怎么弄
  • 现在做网站一般做多宽济南建站模板
  • 西安网站推广公司电话做结构图的网站
  • 网站名后台修改后 前台不显示wordpress 写文章 插件
  • 惠州做网站建设网站建设自查及整改报告
  • 创建网站的app慈溪app开发公司
  • 长沙网站优化技巧徐州seo管理
  • 福州网站建设服务上海龙元建设网站
  • 潜江网站建设兼职青岛制作公司网站
  • 宿迁市区建设局网站网站开发基本要求
  • 百度网站大全首页自己搭建网络培训平台
  • diy网站腾讯云做的网站会被拦截么
  • 网站开发的教学网站网站页面外链怎么做
  • 网站有哪些推荐爱站seo查询软件
  • 定制网站建设创意3d模型代做网站
  • 验证码平台网站开发做ppt封面的网站
  • 网站点击量统计企业响应式网站建设报价
  • 免费好用的网站制作网站联盟广告