SimTextFilePreviewImpl.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 org.apache.commons.codec.binary.Base64;
  8. import org.apache.commons.io.FileUtils;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.ui.Model;
  11. import java.io.File;
  12. import java.io.IOException;
  13. /**
  14. * Created by kl on 2018/1/17.
  15. * Content :处理文本文件
  16. */
  17. @Service
  18. public class SimTextFilePreviewImpl implements FilePreview {
  19. private final OtherFilePreviewImpl otherFilePreview;
  20. public SimTextFilePreviewImpl(OtherFilePreviewImpl otherFilePreview) {
  21. this.otherFilePreview = otherFilePreview;
  22. }
  23. @Override
  24. public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
  25. String fileName = fileAttribute.getName();
  26. ReturnResponse<String> response = DownloadUtils.downLoad(fileAttribute, fileName);
  27. if (response.isFailure()) {
  28. return otherFilePreview.notSupportedFile(model, fileAttribute, response.getMsg());
  29. }
  30. try {
  31. File originFile = new File(response.getContent());
  32. String charset = KkFileUtils.getFileEncode(originFile);
  33. String fileData = FileUtils.readFileToString(originFile, charset);
  34. model.addAttribute("textData", Base64.encodeBase64String(fileData.getBytes()));
  35. } catch (IOException e) {
  36. return otherFilePreview.notSupportedFile(model, fileAttribute, e.getLocalizedMessage());
  37. }
  38. return TXT_FILE_PREVIEW_PAGE;
  39. }
  40. }