Просмотр исходного кода

模板查看页面支持多文件上传

sunyj 9 лет назад
Родитель
Сommit
bbcc497676

+ 6 - 3
src/main/java/com/uas/report/controller/FileController.java

@@ -7,10 +7,12 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -43,12 +45,13 @@ public class FileController {
 	@RequestMapping("/upload")
 	@ResponseBody
 	public String upload(String userName, String fileType, String filePath, Boolean isAbsolutePath,
-			MultipartFile file) {
+			@RequestParam("file") MultipartFile[] files) {
 		// 未指定上传文件路径,则按照账套名称上传
+		// 该情况下,不会上传多个文件的
 		if (StringUtils.isEmpty(filePath)) {
-			return fileService.upload(userName, fileType, file);
+			return fileService.upload(userName, fileType, ArrayUtils.isEmpty(files) ? null : files[0]);
 		} else {
-			return fileService.upload(filePath, isAbsolutePath, file);
+			return fileService.upload(filePath, isAbsolutePath, files);
 		}
 	}
 

+ 2 - 2
src/main/java/com/uas/report/service/FileService.java

@@ -44,11 +44,11 @@ public interface FileService {
 	 *            指定的文件路径
 	 * @param isAbsolutePath
 	 *            文件路径是否为绝对路径,不传的话默认为假
-	 * @param file
+	 * @param files
 	 *            上传的文件
 	 * @return 上传结果
 	 */
-	public String upload(String filePath, Boolean isAbsolutePath, MultipartFile file);
+	public String upload(String filePath, Boolean isAbsolutePath, MultipartFile[] files);
 
 	/**
 	 * 获取账套下的模板路径

+ 19 - 25
src/main/java/com/uas/report/service/impl/FileServiceImpl.java

@@ -104,7 +104,7 @@ public class FileServiceImpl implements FileService {
 			logger.error(message);
 			return message;
 		}
-		if (file == null || file.isEmpty()) {
+		if (file == null) {
 			message = "文件为空,无法进行上传!";
 			logger.error(message);
 			return message;
@@ -147,46 +147,40 @@ public class FileServiceImpl implements FileService {
 			return message;
 		} catch (IllegalStateException | IOException e) {
 			e.printStackTrace();
+			message = "上传文件失败: " + fileName;
+			logger.error(message);
+			return message;
 		}
-
-		message = "上传文件失败: " + fileName;
-		logger.error(message);
-		return message;
 	}
 
 	@Override
-	public String upload(String filePath, Boolean isAbsolutePath, MultipartFile file) {
+	public String upload(String filePath, Boolean isAbsolutePath, MultipartFile[] files) {
 		logger.info("request... " + filePath);
-		String message;
-		if (file == null || file.isEmpty()) {
+		String message = "";
+		if (ArrayUtils.isEmpty(files)) {
 			message = "文件为空,无法进行上传!";
 			logger.error(message);
 			return message;
 		}
 		filePath = getAbsolutePath(filePath, isAbsolutePath);
-		File targetFile = new File(filePath);
-		// 根据所上传的文件名称创建文件
-		if (targetFile.exists() && targetFile.isFile()) {
-			targetFile = new File(targetFile.getParent() + "/" + file.getOriginalFilename());
-		} else {
-			targetFile = new File(targetFile.getPath() + "/" + file.getOriginalFilename());
-		}
+		File targetFile = new File(filePath + "/" + files[0].getOriginalFilename());
 		// 检查路径是否存在
 		if (!targetFile.getParentFile().exists()) {
 			targetFile.getParentFile().mkdirs();
 		}
-		try {
-			file.transferTo(targetFile);
-			message = "成功上传文件至:" + targetFile.getPath();
-			logger.info(message);
-			return message;
-		} catch (IllegalStateException | IOException e) {
-			e.printStackTrace();
+		for (MultipartFile file : files) {
+			targetFile = new File(targetFile.getParent() + "/" + file.getOriginalFilename());
+			try {
+				file.transferTo(targetFile);
+				message += "成功上传文件至:" + targetFile.getPath() + "\n";
+			} catch (IllegalStateException | IOException e) {
+				e.printStackTrace();
+				message += "上传文件失败: " + targetFile.getPath() + "\n";
+			}
 		}
-
-		message = "上传文件失败: " + targetFile.getPath();
-		logger.error(message);
+		logger.info(message);
 		return message;
+
 	}
 
 	@Override

+ 1 - 0
src/main/webapp/resources/css/fileUpload.css

@@ -11,4 +11,5 @@ body {
 	padding: 1px 15px 1px 15px;
 	border-radius: 10%;
 	background-color: #eee;
+	outline:none;
 }

+ 2 - 2
src/main/webapp/resources/js/files/app.js

@@ -32,10 +32,11 @@ $("#uploadButton").click(function() {
 	}
 	var fileInvalid = upload({
 		url : uploadUrl,
-		multiple : false,// 是否上传多个文件
+		multiple : true,// 是否上传多个文件
 		maxSize : 1000,// 单个文件大小的上限(MB)
 		params : params,// 其他参数
 		success : function(data) {
+			console.log(data);
 			spinner = hideLoading(spinner);
 			listFiles(currentPath.value);
 		},
@@ -45,7 +46,6 @@ $("#uploadButton").click(function() {
 			spinner = hideLoading(spinner);
 		},
 		showLoading : function() {
-			console.log("fileInvlid");
 			spinner = showLoading(spinner, spinnerContainer);
 		}
 	});

+ 3 - 1
src/main/webapp/resources/js/util/utils.js

@@ -88,7 +88,9 @@ function upload(option) {
 		}
 		// 指定的参数
 		var formData = new FormData();
-		formData.append("file", input.files[0]);
+		for (var i = 0; i < input.files.length; i++) {
+			formData.append("file", input.files[i]);
+		}
 		if (option.params) {
 			for ( var param in option.params) {
 				formData.append(param, option.params[param]);