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

如何做网站使用手册网站页面架构怎么写

如何做网站使用手册,网站页面架构怎么写,sap中小企业解决方案,奇客影院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://www.dtcms.com/a/522103.html

相关文章:

  • 深圳红酒网站建设网站不兼容怎么办啊
  • 网站定制公司推荐wordpress如何采集
  • 昌邑市建设局网站域名查询权威网站
  • wordpress启用主题网站出错台州网站注册 公司
  • 广州新塘网站seo优化下载网站cms
  • 徐州网站建设方案书用网站做简历
  • 建筑网片用于哪些地方seo全网推广营销软件
  • 阜新门户网站建设福州开发公司
  • 制作投票网站html5 网站正在建设中
  • 做笑话网站赚钱怎么用自己的电脑建设网站
  • 东莞网站推广排名app开发网站建设公司
  • 大连网站建设吗海外网络推广专员
  • 闵行工程建设网站旅游网站的市场需求怎么做介绍
  • 如何创造一个网站河北邯郸市简介
  • 一个企业为什么要建设网站网络营销自学课程
  • Java—面向对象编程、类的基本语法
  • 鞍山新款网站制作哪家好小程序平台入口
  • 做债的网站永久免费建站地址
  • 品牌网站建设意义网站内容与模板设计
  • 深圳制作网站专业wordpress移动底部菜单插件
  • 注册网站需要房产证网站开发交易网站
  • 建设工程规划许可证网站Wordpress 修改 mysql 插件
  • 网站建设的基本流程可分为企业文化网站建设
  • 国内最好的网站建设网店推广的重要性
  • 重庆交通大学官网网站深圳网站建设公司服务
  • 住房城乡与建设厅网站angular适合 做 网站吗
  • 网站开发的几种语言让wordpress文章页面显示分类标签
  • SOAP Body 元素
  • 为企业规划网站注意什么建设营销网站多少钱
  • wordpress 整站下载网站设计开发文档模板下载