Преглед на файлове

大文件上传,转pdf

“zhifk” преди 2 години
родител
ревизия
5ab47b9c3e
променени са 1 файла, в които са добавени 44 реда и са изтрити 10 реда
  1. 44 10
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

+ 44 - 10
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+import org.apache.commons.fileupload.disk.DiskFileItem;
 import org.apache.commons.io.FileUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.springblade.common.constant.CommonConstant;
@@ -45,9 +46,11 @@ import org.springblade.resource.vo.MultipartFileParam;
 import org.springblade.resource.vo.NewBladeFile;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.BeanUtils;
+import org.springframework.http.MediaType;
 import org.springframework.util.DigestUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
@@ -204,7 +207,7 @@ public class LargeFileEndpoint {
 		// 获取文件路径
 		/**Windows文件路径要加在哪个盘**/
 //		String filePath = "D:/www/wwwroot/Users/hongchuangyanfa/Desktop/Desktop/ceshi";
-		String filePath = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
+		String filePath ="D:" +ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
 		// 创建文件夹
 //		getAbsoluteFile(filePath, fileName);
 //		new File(filePath, fileName);
@@ -266,19 +269,34 @@ public class LargeFileEndpoint {
 				renameFile(file,param.getFilename());
 				FileInputStream inputStream = new FileInputStream(filePath + param.getFilename());
 //				上传oss
+				long l = System.currentTimeMillis();
+				System.out.println("kaishi===================================="+l);
 				BladeFile bladeFile = ossBuilder.template().putFile(param.getFilename(),inputStream);
+				long l1 = System.currentTimeMillis();
+				System.out.println("jieshu===================================="+(l1-l));
 
+				File file1 = new File(filePath + param.getFilename());
 
 				NewBladeFile newBladeFile = new NewBladeFile();
-//				if(param.getFilename().contains("pdf")){
-//					PDDocument document = PDDocument.load(inputStream);
-//					//获取文件页数
-//					newBladeFile.setPage(document.getPages().getCount());
-//					//pdf的路径就是文件上传的路径
-//					newBladeFile.setPdfUrl(bladeFile.getLink());
-//				}
+				if(param.getFilename().contains("pdf")){
+					FileInputStream inputStream1 = new FileInputStream(filePath + param.getFilename());
+					PDDocument document = PDDocument.load(inputStream1);
+					//获取文件页数
+					newBladeFile.setPage(document.getPages().getCount());
+					//pdf的路径就是文件上传的路径
+					newBladeFile.setPdfUrl(bladeFile.getLink());
+				}else if(param.getFilename().contains("xlsx") || param.getFilename().contains("xls")){
+					MultipartFile multipartFile = getMultipartFile(file1);
+					newBladeFile = this.commonFileClient.excelToPdf(multipartFile);
+				}else if(param.getFilename().contains("docx")){
+					MultipartFile multipartFile = getMultipartFile(file1);
+					newBladeFile = this.commonFileClient.wordToPdf(multipartFile);
+				}else if(param.getFilename().contains("png") || param.getFilename().contains("jpg")){
+					MultipartFile multipartFile = getMultipartFile(file1);
+					newBladeFile = this.commonFileClient.pngOrJpgToPdf(multipartFile);
+				}
 				BeanUtils.copyProperties(bladeFile, newBladeFile);
-				File file1 = new File(filePath + param.getFilename());
+
 				//删除本地文件
 				file1.delete();
 				iLargeFileService.updateLargeFileDeleted(param.getIdentifier());
@@ -303,6 +321,22 @@ public class LargeFileEndpoint {
 		return result;
 	}
 
+	/**
+	 *file 转 MultipartFile
+	 * **/
+	public static MultipartFile getMultipartFile(File file){
+		DiskFileItem item = new DiskFileItem("file",
+				MediaType.MULTIPART_FORM_DATA_VALUE,
+				true,
+				file.getName(),(int) file.length(),file.getParentFile());
+		try {
+			OutputStream os = item.getOutputStream();
+			os.write(FileUtils.readFileToByteArray(file));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return new CommonsMultipartFile(item);
+	}
 	/**
 	 * 构建上传目录和文件
 	 */
@@ -316,7 +350,7 @@ public class LargeFileEndpoint {
 	 * 构建上传完整目录
 	 */
 	private String buildUploadDir() {
-		String fullDir =ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
+		String fullDir ="D:" +ParamCache.getValue(CommonConstant.SYS_LOCAL_URL)+"largeFile/";
 		File dir = new File(fullDir);
 		if (!dir.exists()) {
 			dir.mkdirs();