SimTextFilePreviewImpl.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 org.apache.commons.io.FileUtils;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.ui.Model;
  9. import org.springframework.util.Base64Utils;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import java.nio.charset.StandardCharsets;
  13. /**
  14. * Created by kl on 2018/1/17.
  15. * Content :处理文本文件
  16. */
  17. @Service
  18. public class SimTextFilePreviewImpl implements FilePreview {
  19. public static final String TEXT_TYPE = "textType";
  20. public static final String DEFAULT_TEXT_TYPE = "simText";
  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 xmlString = FileUtils.readFileToString(originFile, StandardCharsets.UTF_8);
  35. model.addAttribute("textData", Base64Utils.encodeToString(xmlString.getBytes()));
  36. } catch (IOException e) {
  37. return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
  38. }
  39. if (!model.containsAttribute(TEXT_TYPE)) {
  40. model.addAttribute(TEXT_TYPE, DEFAULT_TEXT_TYPE);
  41. }
  42. return "txt";
  43. }
  44. }