// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package org.jeecg.modules.doc.component; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.doc.util.UFOPUtils; import org.jeecg.modules.doc.vo.UploadFile; import org.jeecg.modules.doc.vo.UploadFileResult; import org.jeecg.modules.doc.enums.UploadFileStatusEnum; import org.springframework.stereotype.Component; @Component public class LocalStorageUploader extends Uploader { public static Map FILE_URL_MAP = new HashMap(); public LocalStorageUploader() { } protected UploadFileResult doUploadFlow(QiwenMultipartFile qiwenMultipartFile, UploadFile uploadFile) { UploadFileResult uploadFileResult = new UploadFileResult(); try { String fileUrl = UFOPUtils.getUploadFileUrl(uploadFile.getIdentifier(), qiwenMultipartFile.getExtendName()); if (StringUtils.isNotEmpty((CharSequence)FILE_URL_MAP.get(uploadFile.getIdentifier()))) { fileUrl = (String)FILE_URL_MAP.get(uploadFile.getIdentifier()); } else { FILE_URL_MAP.put(uploadFile.getIdentifier(), fileUrl); } String tempFileUrl = fileUrl + "_tmp"; String confFileUrl = fileUrl.replace("." + qiwenMultipartFile.getExtendName(), ".conf"); File file = new File(UFOPUtils.getStaticPath() + fileUrl); File tempFile = new File(UFOPUtils.getStaticPath() + tempFileUrl); File confFile = new File(UFOPUtils.getStaticPath() + confFileUrl); RandomAccessFile raf = new RandomAccessFile(tempFile, "rw"); try { FileChannel fileChannel = raf.getChannel(); long position = (long)(uploadFile.getChunkNumber() - 1) * uploadFile.getChunkSize(); byte[] fileData = qiwenMultipartFile.getUploadBytes(); fileChannel.position(position); fileChannel.write(ByteBuffer.wrap(fileData)); fileChannel.force(true); fileChannel.close(); } finally { IOUtils.closeQuietly(raf); } boolean isComplete = this.checkUploadStatus(uploadFile, confFile); uploadFileResult.setFileUrl(fileUrl); uploadFileResult.setFileName(qiwenMultipartFile.getFileName()); uploadFileResult.setExtendName(qiwenMultipartFile.getExtendName()); uploadFileResult.setFileSize(uploadFile.getTotalSize()); if (uploadFile.getTotalChunks() == 1) { uploadFileResult.setFileSize(qiwenMultipartFile.getSize()); } uploadFileResult.setIdentifier(uploadFile.getIdentifier()); if (isComplete) { tempFile.renameTo(file); FILE_URL_MAP.remove(uploadFile.getIdentifier()); if (UFOPUtils.isImageFile(uploadFileResult.getExtendName())) { InputStream is = null; try { is = new FileInputStream(UFOPUtils.getLocalSaveFile(fileUrl)); BufferedImage src = ImageIO.read(is); uploadFileResult.setBufferedImage(src); } catch (IOException var25) { var25.printStackTrace(); } finally { IOUtils.closeQuietly(is); } } uploadFileResult.setStatus(UploadFileStatusEnum.SUCCESS); } else { uploadFileResult.setStatus(UploadFileStatusEnum.UNCOMPLATE); } return uploadFileResult; } catch (IOException var28) { throw new UploadException(var28); } } public void cancelUpload(UploadFile uploadFile) { String fileUrl = (String)FILE_URL_MAP.get(uploadFile.getIdentifier()); String tempFileUrl = fileUrl + "_tmp"; String confFileUrl = fileUrl.replace("." + FilenameUtils.getExtension(fileUrl), ".conf"); File tempFile = new File(tempFileUrl); if (tempFile.exists()) { tempFile.delete(); } File confFile = new File(confFileUrl); if (confFile.exists()) { confFile.delete(); } } protected void doUploadFileChunk(QiwenMultipartFile qiwenMultipartFile, UploadFile uploadFile) throws IOException { } protected UploadFileResult organizationalResults(QiwenMultipartFile qiwenMultipartFile, UploadFile uploadFile) { return null; } }