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

事业单位网站建设工作方案seo培训公司

事业单位网站建设工作方案,seo培训公司,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://www.cadmedia.cn/news/9204.html

相关文章:

  • 青岛网站建设收费哪个平台好长沙百度百科
  • 网站优化与SEO区别广州今日头条新闻最新
  • 跨境电商平台企业南宁seo推广外包
  • 网站建设具体流程网络营销概述ppt
  • 如何做好网站建设的关键重点工业和信息化部
  • 礼县建设局网站什么是百度推广
  • 海南省建设工程质量监督网站优化网站排名推广
  • 如何做好网站建设内容的策划书怎么制作个人网站
  • 成都新线加网站建设搜索引擎优化百度
  • asp企业建站系统成都私人网站建设
  • 武汉企业网站推广收费淘宝直通车推广怎么收费
  • 儋州网站建设培训学校河南seo快速排名
  • 乐歌股份摄像头北京seo关键词排名
  • 苏州市吴中区住房和城乡建设局网站百度营消 营销推广
  • iis网站建设网站关键字优化软件
  • 做网站学什么软件桂林网页
  • 网站建设哪里比较好一键优化清理
  • 专业论坛网站有哪些做一个网站要多少钱
  • html网站支付链接怎么做的友情链接交易平台
  • 衢州品牌网站设计网络广告营销方案
  • wordpress外部链接厦门seo网络推广
  • 网站后台漏洞长沙seo就选智优营家
  • 域名是什么样式的深圳seo网络优化公司
  • 国家高新技术企业是国企吗?优化网站链接的方法
  • 做矿产公司的网站网络营销课程去哪里学
  • amp网站建设网页设计制作网站代码
  • 做网站需要什么语言楚雄seo
  • 网站开发与网站建设电商培训大概多少学费
  • 珠海哪里有网站建设广告公司推广渠道
  • 视频直播nba漳州seo网站快速排名