//
|
// 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<String, String> 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;
|
}
|
}
|