java 实现多个文件同时上传

要实现Java中的多文件同时上传,可以使用Java Servlet技术和Apache Commons FileUpload库。下面是一个简单的示例:
1、在HTML表单中使用input标签中的multiple属性允许用户选择多个文件

<form action="upload" method="post" id="addMore" enctype="multipart/form-data">
  <input type="file" name="file" id="file" onchange="uploadFilesLoad()" multiple>
  <input type="submit" value="Upload">
</form>

2、js处理

// 选中上传文件处理
function uploadFilesLoad() {
	var files = document.getElementById("file").files;
	for(var i = 0; i < files.length; i++) {
		// 文件处理
		// ...
	}
}

// 上传文件
function upload() {
	// 上传请求url
	var uploadUrl = "/.../uploadFile";
	$("#addMore").ajaxSubmit({
			type: "post",
			url: uploadUrl,
			dataType: "json",
			//headers: {Auth:TOKEN},
			beforeSubmit: function (formData) {
				// 上传前数据处理 formData为form所有数据
				// ...
			},
			success: function (resp) {
				// 上传成功处理
				// ...
			},
			error: function (code, error) {
				// 上传失败处理
				// ...
			}
		});
}

3、后台处理

import org.springframework.web.multipart.MultipartHttpServletRequest;

@PostMapping(value = "/uploadFile")
public void uploadFile(HttpServletRequest request) {
	MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
	List<MultipartFile> fileList = mRequest.getFiles("file");
	for (MultipartFile upfile : fileList) {
			// 文件大小
            String fileSize = new BigDecimal(upfile.getSize()).divide(new BigDecimal(1024), 0, BigDecimal.ROUND_HALF_UP).toPlainString();
			String originalFilename = upfile.getOriginalFilename();
			// 解决IE兼容问题
            originalFilename = originalFilename.substring(originalFilename.lastIndexOf("\\") + 1);
			// 文件名
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
			// 文件类型
            String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
			// 文件上传路径
			String path = "";
            String filePath = path + File.separator + originalFilename;
            File pathFile = new File(filePath);
            // 文件夹是否存在
            if (pathFile.exists()) {
				// 若不存在,创建
                if (!pathFile.mkdirs()) {
					return false;
				}
            }
			// 上传文件
			/*FileOutputStream outputStream = new FileOutputStream(pathFile);
			fos.write(mFile.getBytes());
			fos.close();*/
        }
}

  

posted @ 2023-03-31 16:45  ヤBig、Bossづ  阅读(2179)  评论(0)    收藏  举报