Spring MultipartFile
работает не так.
Spring mvc ServletDispatcher вызывает checkMultipart
на раннем этапе своего doDispatch:
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequest processedRequest = request;
HandlerExecutionChain mappedHandler = null;
boolean multipartRequestParsed = false;
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
try {
ModelAndView mv = null;
Exception dispatchException = null;
try {
processedRequest = checkMultipart(request);
и checkMultipart
в конечном итоге делегирует request.getParts()
:
private void parseRequest(HttpServletRequest request) {
try {
Collection<Part> parts = request.getParts();
ипоэтому реальный ответ заключается в том, что это будет зависеть от того, как ваш сервер приложений реализует разбор запросов multipart / formdata.
Реализация Tomcat getParts
, например, загружает файлы во временные файлы перед возвратом из этого метода, и поэтому файлы уже загружены к моменту передачи экземпляра MultipartFile
вашему Contoller.
Другие серверы приложений могут вести себя по-разному, но я сомневаюсь, честно.В любом случае, вы не хотите полагаться на одно поведение.Лучше найти другое, надежное, решение.Как, например, ограничение размера загрузки файла через эту конечную точку.