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

做网站的用途网站模板库官网

做网站的用途,网站模板库官网,深圳设计公司品牌,31省本土新增今天Vditor编辑器图片上传功能 使用Vditor进行图片上传时,会返回图片在后端的相对路径,这在前端是无法进行显示的(如下图) 于是为了将图片正常显示,我采取了和头像上传一样的解决方案,使用阿里云图床进行存储…

Vditor编辑器图片上传功能

使用Vditor进行图片上传时,会返回图片在后端的相对路径,这在前端是无法进行显示的(如下图)
在这里插入图片描述
于是为了将图片正常·显示,我采取了和头像上传一样的解决方案,使用阿里云图床进行存储。

实现步骤

首先定位Vditor编辑器向后端发送的请求,根据浏览器的开发者工具,我们找到了具体的API(如下图)
在这里插入图片描述
下面是UploadController.java文件中的与该次请求相关的方法。

@PostMapping("/file/batch")@Transactional(rollbackFor = Exception.class)public GlobalResult<JSONObject> batchFileUpload(@RequestParam(value = "file[]", required = false) MultipartFile[] multipartFiles, @RequestParam(defaultValue = "1") Integer type, HttpServletRequest request) {TokenUser tokenUser = getTokenUser(request);File file = genFile(type);String typePath = FilePath.getPath(type);String localPath = Utils.getProperty("resource.file-path") + "/" + typePath + "/";Map<String, String> successMap = new HashMap<>(16);Set<String> errFiles = new HashSet<>();for (MultipartFile multipartFile : multipartFiles) {String orgName = multipartFile.getOriginalFilename();if (multipartFile.getSize() == 0) {errFiles.add(orgName);continue;}String fileType = FileUtils.getExtend(orgName);try {String md5 = DigestUtils.md5DigestAsHex(multipartFile.getBytes());String fileUrl = forestFileService.getFileUrlByMd5(md5, tokenUser.getIdUser(), fileType);if (StringUtils.isNotEmpty(fileUrl)) {successMap.put(orgName, fileUrl);continue;}String fileName = System.currentTimeMillis() + fileType;String savePath = file.getPath() + File.separator + fileName;File saveFile = new File(savePath);fileUrl = localPath + fileName;FileCopyUtils.copy(multipartFile.getBytes(), saveFile);forestFileService.insertForestFile(fileUrl, savePath, md5, tokenUser.getIdUser(), multipartFile.getSize(), fileType);successMap.put(orgName, localPath + fileName);} catch (IOException e) {errFiles.add(orgName);}}JSONObject data = new JSONObject(2);data.put("errFiles", errFiles);data.put("succMap", successMap);return GlobalResultGenerator.genSuccessResult(data);}

这段代码实现了一个批量文件上传的功能:

  • 主要逻辑部分:
    • 检查文件大小,跳过空文件
    • 计算文件MD5值用于去重
    • 检查数据库中是否已存在相同MD5的文件,如果存在则直接返回已有URL
    • 生成唯一文件名(时间戳+文件扩展名)
    • 构建文件保存路径
    • 将文件内容复制到目标位置
    • 在数据库中记录文件信息
    • 将文件URL添加到成功列表
  • 使用MD5进行文件去重,避免重复存储相同内容的文件
  • 使用事务确保数据一致性
  • 分别记录成功和失败的文件,提供完整的上传结果

要修改的就是file_url相关的部分,根据数据库表结构可以知道有两个列与路径有关,分别是file_pathfile_url,原本这两个列存储的是相同的值,现在进行修改将file_url改为存储真正的阿里云图床的URL。

首先在OSSUpload.java里添加一个新的上传方法:

    /*** 上传MultipartFile文件到OSS* * @param file MultipartFile文件* @param folder 文件夹路径* @return 访问URL* @throws IOException IO异常*/public String uploadFileToOSS(MultipartFile file, String folder) throws IOException {try {// 1. 获取文件名和扩展名String originalFilename = file.getOriginalFilename();String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));// 2. 生成唯一文件名String fileName = folder + UUID.randomUUID() + fileType;// 3. 上传文件到OSSossClient.putObject(ossConfig.getBucketName(),fileName,new ByteArrayInputStream(file.getBytes()));// 4. 返回访问URLreturn "https://" + ossConfig.getBucketName() + "." + ossConfig.getEndpoint() + "/" + fileName;} catch (Exception e) {throw new RuntimeException("上传文件到OSS失败: " + e.getMessage(), e);}}

然后修改batchFileUpload方法的逻辑:

    @PostMapping("/file/batch")@Transactional(rollbackFor = Exception.class)public GlobalResult<JSONObject> batchFileUpload(@RequestParam(value = "file[]", required = false) MultipartFile[] multipartFiles, @RequestParam(defaultValue = "1") Integer type, HttpServletRequest request) {TokenUser tokenUser = getTokenUser(request);File file = genFile(type);String typePath = FilePath.getPath(type);String localPath = Utils.getProperty("resource.file-path") + "/" + typePath + "/";Map<String, String> successMap = new HashMap<>(16);Set<String> errFiles = new HashSet<>();for (MultipartFile multipartFile : multipartFiles) {String orgName = multipartFile.getOriginalFilename();if (multipartFile.getSize() == 0) {errFiles.add(orgName);continue;}String fileType = FileUtils.getExtend(orgName);try {String md5 = DigestUtils.md5DigestAsHex(multipartFile.getBytes());String fileUrl = forestFileService.getFileUrlByMd5(md5, tokenUser.getIdUser(), fileType);if (StringUtils.isNotEmpty(fileUrl)) {successMap.put(orgName, fileUrl);continue;}String fileName = System.currentTimeMillis() + fileType;String savePath = file.getPath() + File.separator + fileName;File saveFile = new File(savePath);
//                fileUrl = localPath + fileName;// 使用OSS上传文件fileUrl = ossUpload.uploadFileToOSS(multipartFile, typePath + "/article");successMap.put(orgName, fileUrl);FileCopyUtils.copy(multipartFile.getBytes(), saveFile);forestFileService.insertForestFile(fileUrl, savePath, md5, tokenUser.getIdUser(), multipartFile.getSize(), fileType);
//                successMap.put(orgName, localPath + fileName);} catch (IOException e) {errFiles.add(orgName);}}JSONObject data = new JSONObject(2);data.put("errFiles", errFiles);data.put("succMap", successMap);return GlobalResultGenerator.genSuccessResult(data);}

最后,图片能够正常上传和显示:
在这里插入图片描述

http://www.dtcms.com/wzjs/52622.html

相关文章:

  • 公司网站是怎么样的大数据比较好的培训机构
  • 市住房和城乡建设委员会网站房产栏目百度查看订单
  • 东营网站建设公司网站收录入口
  • 合肥市城乡建设局网站首页百度安全中心
  • 门户营销型网站广告推广投放平台
  • 电脑网站建设微信营销软件有哪些
  • web毕业设计代做网站百度提交入口
  • 北京市建委网站官网策划是做什么的
  • 微网站开发服务免费的推广平台
  • 手机做网站用什么软件优化网站排名推广
  • 上海平台公司seo每日工作内容
  • 在线制作免费生成水印seo网站优化工具
  • 下载ps软件免费版下载安装网络优化公司哪家好
  • 西安论坛网站制作维护网页制作免费模板
  • 淘宝客cms网站怎么做网址大全123
  • 微网站建设报价方案模板网页加速器
  • 设计师分享网站在线域名ip查询
  • css个人简介网站怎么做新手如何学seo
  • 可以自己做logo的网站抖音搜索排名
  • 广告推广群seo标题优化分析范文
  • 湖北什么网站建设值得推荐资源
  • 网站keyword如何排序刺激广告
  • 网站一直维护意味着什么整合营销传播名词解释
  • 西安高端网站建设招聘seo专员
  • 区块链开发与应用专业搜狗网站seo
  • 网站后台模板关联自己做的网站seo诊断报告
  • wordpress竖排主题深圳博惠seo
  • 做网站用哪个电脑电商网站
  • 江门企业模板建站免费个人网站注册
  • 企业网站程序制作小型培训机构管理系统