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

wordpress本站运行台州企业网站搭建电话

wordpress本站运行,台州企业网站搭建电话,网站带薪歌手都要怎样做呀,WordPress显示更新进度插件在不暴露minio地址的前提下,使用kkfile实现文件预览,还加入token认证,提高安全性。 关于minio的安装与相关基础配置和使用,可以看博主的另一篇minio介绍文章 一、文件上传 上传服务 Autowiredprivate MinioClient client;Autow…

在不暴露minio地址的前提下,使用kkfile实现文件预览,还加入token认证,提高安全性。

关于minio的安装与相关基础配置和使用,可以看博主的另一篇minio介绍文章

一、文件上传

上传服务

    @Autowiredprivate MinioClient client;@Autowiredprivate MinioConfig minioConfig;public void uploadFile(MultipartFile file) throws Exception {String fileName = System.currentTimeMillis() + "-" + file.getOriginalFilename();PutObjectArgs args = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(fileName).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build();client.putObject(args);
}

封装接口

@PostMapping("upload")
public RestResult<SysFile> upload(MultipartFile file) {try {sysFileService.uploadFile(file);} catch (Exception e) {log.error("上传文件失败", e);return RestResult.fail(e.getMessage());}
}

二、文件下载

下载服务

    @Autowiredprivate MinioClient client;@Autowiredprivate MinioConfig minioConfig;public void download(String filename, HttpServletResponse response) throws ServiceException {try {InputStream inputStream = client.getObject(GetObjectArgs.builder().bucket(minioConfig.getBucketName()).object(filename).build());// 设置响应头信息,告诉前端浏览器下载文件response.setContentType("application/octet-stream;charset=UTF-8");response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));// 获取输出流进行写入数据OutputStream outputStream = response.getOutputStream();// 将输入流复制到输出流byte[] buffer = new byte[4096];int bytesRead = -1;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}// 关闭流资源inputStream.close();outputStream.close();} catch (Exception e) {log.error("文件下载失败:" + e.getMessage());throw new ServiceException("文件下载失败");}
}

封装接口

@ApiOperation("文件下载")
@GetMapping("/download/{token}/{filename}")
public void getDownload(@PathVariable("token") String token, @PathVariable("filename") String filename, HttpServletResponse response) {tokenUtils.validateToken(token);sysFileService.download(filename, response);
}

上面的接口有两个地方需要注意

@GetMapping("/download/{token}/{filename}")中filename参数必须放在最后
tokenUtils.validateToken(token); 
该接口要在拦截器中放行,验证token在代码逻辑中,这里根据项目中实际场景去实现。该地址为kkfile请求

三、文件预览地址获取

文件预览地址生成服务(该服务只是获取token并拼接到文件下载地址中,不对token做验证,因为该服务的接口在请求进入前要做校验)

public String getPreviewUrl(String filename) throws UnsupportedEncodingException {ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = sra.getRequest();if (request ==null || StringUtils.isBlank(request.getHeader(TokenConstants.AUTHENTICATION))) {throw new ServiceException("未获取到有效token");}String previewUrl = filePreviewUrl + FileUploadUtils.base64UrlEncode(fileDownloadUrl + "/" + token + "/" + filename);return previewUrl + "&fullfilename=" + URLEncoder.encode(filename, "UTF-8");
}

FileUploadUtils中的base64UrlEncode方法

public static String base64UrlEncode(String url) throws UnsupportedEncodingException {String base64Url = Base64.getEncoder().encodeToString(url.getBytes(StandardCharsets.UTF_8));return URLEncoder.encode(base64Url, "UTF-8");
}

封装接口,获取文件预览地址

@GetMapping("/getPreviewUrl")
public RestResult<String> getPreviewUrl(String filename) throws UnsupportedEncodingException {return RestResult.ok(sysFileService.getPreviewUrl(filename));
}

测试
假设
文件服务地址为:http://file-server
kkfile服务地址为:http://kkfile-server
文件名称为:xxxx.docx
最后生成的文件预览地址为:

http://kkfile-server/onlinePreview?url=aHR0cDovLzE3Mi4xNi41MC4y....&fullfilename=xxxx.docx

其中aHR0cDovLzE3Mi4xNi41MC4y…为:

FileUploadUtils.base64UrlEncode("http://file-server" + "/" + token + "/" + filename);

文章转载自:

http://3qo7nNh9.tnkwj.cn
http://nPxTUIpZ.tnkwj.cn
http://NgyWht2B.tnkwj.cn
http://rRyLT5zv.tnkwj.cn
http://v1QS3UB4.tnkwj.cn
http://PSOtMmIS.tnkwj.cn
http://WqUMvCrX.tnkwj.cn
http://3KyBWOrI.tnkwj.cn
http://EEn1OJlM.tnkwj.cn
http://z4YCAp7H.tnkwj.cn
http://MPdbLVMu.tnkwj.cn
http://NrAEUpiY.tnkwj.cn
http://d5GjHTre.tnkwj.cn
http://2Wku1UMg.tnkwj.cn
http://1tBzTuA3.tnkwj.cn
http://JUKTO91I.tnkwj.cn
http://jsgeagPH.tnkwj.cn
http://4ogH9vg2.tnkwj.cn
http://dyGenpOn.tnkwj.cn
http://PUIUf4ix.tnkwj.cn
http://vv1JZz3O.tnkwj.cn
http://s3dizkdj.tnkwj.cn
http://yjwepBxa.tnkwj.cn
http://BRzgBpiL.tnkwj.cn
http://qcHOMIqr.tnkwj.cn
http://UF8u2qiJ.tnkwj.cn
http://rM5afuB2.tnkwj.cn
http://lPvb5a0A.tnkwj.cn
http://KlNc5QIj.tnkwj.cn
http://Fuv25blQ.tnkwj.cn
http://www.dtcms.com/wzjs/762293.html

相关文章:

  • 班级网站做哪些方面网站页尾内容
  • vs和sql做购物网站如何增加网站转化率
  • 制作网站需要wordpress百度联盟怎么赚钱
  • 为什么网站突然打不开wordpress 右拉
  • 东莞网站建设推广咨询平台静态网站入侵教程
  • 国外大型网站注册完域名 如何做网站
  • 做视频直播网站需要多少资金单位门户网站功能
  • ps做图下载网站有哪些展厅展台设计搭建
  • 黑河做网站哪家好wordpress编辑小工具代码
  • 国外ui界面设计网站冯耀宗seo视频教程
  • 新手学做网站视频什么叫营销模式
  • 如何自己写一个网站手机开发小程序
  • 网站被国内软件开发公司排行
  • 精品课程网站的设计与实现网站建设小组实验报告
  • 网站总体设计网站自适应手机怎么
  • 绍兴高新区建设网站百度推广下载
  • 手机wap网站 分页wordpress分类目录样式模板
  • html网站登录界面模板下载四川城乡和住房建设厅网站首页
  • 网站与建设实训报告安陆市网站
  • 关于网站策划书描述准确的有网站建设类的职位
  • linux建设网站php打开提示404nginx运行wordpress
  • 做农家乐网站番禺核酸检测点在哪
  • 怎么自己做直播网站吗wordpress保存php失败
  • 网站托管服务合同合肥网站制作费用
  • 做数据图表网站即时设计在线设计
  • 百度网站推广费用多少钱徐州网络建站模板
  • wp建站网站建设要学哪些软件有哪些方面
  • 怎么创办自己的网站js 插件html转换wordpress
  • 佛山外贸网站设计烟台专业做网站的公司
  • 网站群建设座谈会phpmysql网站开发实例