SimTextFilePreviewImpl.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package cn.keking.service.impl;
  2. import cn.keking.model.FileAttribute;
  3. import cn.keking.model.ReturnResponse;
  4. import cn.keking.service.FilePreview;
  5. import cn.keking.utils.DownloadUtils;
  6. import cn.keking.utils.KkFileUtils;
  7. import jodd.io.FileUtil;
  8. import org.apache.commons.codec.binary.Base64;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.ui.Model;
  11. import org.springframework.web.util.HtmlUtils;
  12. import java.io.File;
  13. import java.io.IOException;
  14. import java.nio.charset.StandardCharsets;
  15. /**
  16. * Created by kl on 2018/1/17.
  17. * Content :处理文本文件
  18. */
  19. @Service
  20. public class SimTextFilePreviewImpl implements FilePreview {
  21. private final OtherFilePreviewImpl otherFilePreview;
  22. public SimTextFilePreviewImpl(OtherFilePreviewImpl otherFilePreview) {
  23. this.otherFilePreview = otherFilePreview;
  24. }
  25. @Override
  26. public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
  27. String fileName = fileAttribute.getName();
  28. ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, fileName);
  29. if (response.isFailure()) {
  30. return otherFilePreview.notSupportedFile(model, fileAttribute, response.getMsg());
  31. }
  32. try {
  33. File originFile = new File(response.getContent());
  34. String charset = KkFileUtils.getFileEncode(originFile);
  35. String fileData = FileUtil.readString(originFile, charset);
  36. fileData = HtmlUtils.htmlEscape(fileData, StandardCharsets.UTF_8.name());
  37. model.addAttribute("textData", Base64.encodeBase64String(fileData.getBytes()));
  38. } catch (IOException e) {
  39. return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
  40. }
  41. return TXT_FILE_PREVIEW_PAGE;
  42. }
  43. }