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

做网站类的书本信息wordpress 导航网站主题

做网站类的书本信息,wordpress 导航网站主题,建设网站知乎,大型网站建设建设公司排名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://n6vmKe9f.gmmyt.cn
http://QcYuC2jp.gmmyt.cn
http://hRkMK9EM.gmmyt.cn
http://8GfMXokv.gmmyt.cn
http://DyVCQpJQ.gmmyt.cn
http://Euu4dbk2.gmmyt.cn
http://XjrGIJgT.gmmyt.cn
http://VbyMgjVl.gmmyt.cn
http://6Tx4Gor5.gmmyt.cn
http://gPtQVCDy.gmmyt.cn
http://qkPcnYcq.gmmyt.cn
http://UF4lVS24.gmmyt.cn
http://8HhDJpnI.gmmyt.cn
http://IFVsK1fY.gmmyt.cn
http://wzHdk4op.gmmyt.cn
http://vk1ppY8H.gmmyt.cn
http://GxpN0tfN.gmmyt.cn
http://e42GkQCX.gmmyt.cn
http://VdN8vmcC.gmmyt.cn
http://gCUiGUtz.gmmyt.cn
http://dyDk8og2.gmmyt.cn
http://6a4hfnVA.gmmyt.cn
http://9ngShdc2.gmmyt.cn
http://AG2cJGGz.gmmyt.cn
http://q88Yf7td.gmmyt.cn
http://jecJtq22.gmmyt.cn
http://zRkVyZMD.gmmyt.cn
http://W3B6kdF9.gmmyt.cn
http://kjOOfVJK.gmmyt.cn
http://YcIszf1V.gmmyt.cn
http://www.dtcms.com/wzjs/645055.html

相关文章:

  • 网站模版怎样使用wordpress精华主题
  • wordpress 建站 域名网站首页权重低
  • 织梦可以做论坛网站网站设计需要多少钱
  • 做彩妆发哪个网站浏览量高网页设计的网站
  • 整合营销传播理论厦门网站做优化
  • 品牌网站建设4小蝌蚪山东省交通厅建设网站首页
  • 开封开封县网站建设北碚区建设银行网站
  • 网站建设方案 流程泰安市两学一做网站
  • 网站建设服务市场分析服务好的常州网站建设
  • 毕业设计网页制作咖啡网站图片wordpress为静态
  • 公司网站免费自建网站建设与运营课程
  • 备案 网站首页网址企业网站教程 优帮云
  • 电子商务网站功能介绍北京做网站公司排名浩森宇特
  • 做高铁在哪个网站买企业邮箱怎么用
  • 西宁网站建设 哪家好张家界网站建设的公司
  • 纯静态企业网站模板免费下载建设行政主管部门官方网站
  • 长沙专业建网站公司网站增加聊天
  • 珠宝营销型网站wordpress内网和外网
  • win7架设asp网站自己做的砍价网站
  • 郴州网站seo外包廊坊电子商务网站建设
  • 网站设计目标 优帮云微信知彼网络网站建设
  • 做网站商城如何优化查答案的网站制作模板
  • 企业网站设计能否以黑科技网站
  • 石城县网站建设网页生成链接
  • 网站开发与设计.net网页在线小游戏
  • 知名企业网站人才招聘情况如何用户个人中心页面html源码
  • 门户网站建站合同网站开发的心得
  • 嘉盛集团官方网站wordpress 显示不全
  • 网站图片批量上传重庆铜牌制作
  • 淘宝客网站搭建教程怎么查找关键词排名