springboot不清楚表單字段上傳

楔子

通常表單字段要和 MultipartFile 字段相對應才能上傳 接受到文件,但是如果不清楚 表單字段的情況 需要上傳文件,就需要其他方法。

不清楚表單字段上傳文件

測試效果

附帶上傳 表單文本數據
在這裏插入圖片描述

上傳後臺接受
在這裏插入圖片描述
圖片保存
在這裏插入圖片描述

/**
 * * 在不知道文件名情況下獲取上傳文件
 * 
 * @param file
 * @param request
 * @return
 */
@RequestMapping(value = "upfile", method = RequestMethod.POST)
public @ResponseBody String uploadOssFile(MultipartFile file, HttpServletRequest request, Person person) {
	String picPath = environment.getProperty("pic.Path");
	String picUrl = environment.getProperty("pic.Url");
	log.info(StringUtils.repeat('-', 28));

	log.info("pserson:{}", person.toString());
	// String url = ossService.uploadOssFile(file);
	MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request;

	Map<String, MultipartFile> fileMap = mr.getFileMap();
	Set<Map.Entry<String, MultipartFile>> entries = fileMap.entrySet();
	String url = null;
	for (Map.Entry<String, MultipartFile> entry : entries) {
		MultipartFile multipartFile = entry.getValue();
		String key = entry.getKey();
		url = multipartFile.getOriginalFilename();
		log.info("key-value|表單字段和文件名分別是|:{},{}", key, multipartFile.getOriginalFilename());
		try {
			// TODO 此方法無法自動創建不存在的文件夾
			// multipartFile.transferTo(new File(picPath +
			// multipartFile.getOriginalFilename()));

			// 文件保存
			url = SysUtils.getDateStrSpan_() + "/" + SysUtils.getDate4() + multipartFile.getOriginalFilename();
			// TODO 可以自動創建不存在的文件夾
			FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), new File(picPath + url));
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return String.format("%s/%s", picUrl, url);
	}
}

demo

https://gitee.com/demo51/springboot-jsp

FileUpController.uploadOssFile(MultipartFile, HttpServletRequest, Person)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章