サーバーで実行されているSpringMVCアプリは、クライアントのマシン上の元のファイルにアクセスしません(そうしないと、Webサイトがコンピューターに悪い影響を与える可能性があります)-ブラウザーはファイルのコピーをネットワーク経由でコントローラーに送信します。
アップロードしたファイルをサーバーのファイルシステムにコピーするために使用したコードの抜粋を次に示します。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String uploadFile(
HttpServletResponse response,
@RequestParam(value="filename", required=true) MultipartFile multipartFile,
Model model) throws Exception {
if (!multipartFile.isEmpty()) {
String originalName = multipartFile.getOriginalFilename();
final String baseTempPath = System.getProperty("java.io.tmpdir"); // use System temp directory
String filePath = baseTempPath + File.separator + originalName;
File dest = new File(filePath);
try {
multipartFile.transferTo(dest); // save the file
} catch (Exception e) {
logger.error("Error reading upload: " + e.getMessage(), e);
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "File uploaded failed: " + originalName);
}
}
}