/** * This implementation throws IllegalStateException if attempting to * read the underlying stream multiple times. */ @Override public InputStream getInputStream() throws IOException, IllegalStateException { return this.multipartFile.getInputStream(); }
/** * This implementation returns a description that has the Multipart name. */ @Override public String getDescription() { return "MultipartFile resource [" + this.multipartFile.getName() + "]"; }
/** * Return a Resource representation of this MultipartFile. This can be used * as input to the {@code RestTemplate} or the {@code WebClient} to expose * content length and the filename along with the InputStream. * @return this MultipartFile adapted to the Resource contract * @since 5.1 */ default Resource getResource() { return new MultipartFileResource(this); }
@Override public String getFilename() { return this.multipartFile.getOriginalFilename(); }
@Override public InputStream getBody() throws IOException { if (this.multipartRequest instanceof StandardMultipartHttpServletRequest) { try { return this.multipartRequest.getPart(this.partName).getInputStream(); } catch (Exception ex) { throw new MultipartException("Could not parse multipart servlet request", ex); } } else { MultipartFile file = this.multipartRequest.getFile(this.partName); if (file != null) { return file.getInputStream(); } else { String paramValue = this.multipartRequest.getParameter(this.partName); return new ByteArrayInputStream(paramValue.getBytes(determineCharset())); } } }
@Override public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { return file.getContentType(); } else { return null; } }
@Override public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { return file.getContentType(); } else { return getMultipartParameterContentTypes().get(paramOrFileName); } }
@Override public long contentLength() { return this.multipartFile.getSize(); }
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) { MultipartHttpServletRequest request = (MultipartHttpServletRequest) servletRequest; files.addAll(request.getFileMap().values()); } };
protected void handleParseFailure(Throwable ex) { String msg = ex.getMessage(); if (msg != null && msg.contains("size") && msg.contains("exceed")) { throw new MaxUploadSizeExceededException(-1, ex); } throw new MultipartException("Failed to parse multipart servlet request", ex); }
@Override public String getMultipartContentType(String paramOrFileName) { try { Part part = getPart(paramOrFileName); return (part != null ? part.getContentType() : null); } catch (Throwable ex) { throw new MultipartException("Could not access multipart servlet request", ex); } }
/** * Clean up any resources used by the given multipart request (if any). * @param request current HTTP request * @see MultipartResolver#cleanupMultipart */ protected void cleanupMultipart(HttpServletRequest request) { if (this.multipartResolver != null) { MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class); if (multipartRequest != null) { this.multipartResolver.cleanupMultipart(multipartRequest); } } }
@Override public void cleanupMultipart(MultipartHttpServletRequest request) { if (request.getAttribute("cleanedUp") != null) { throw new IllegalStateException("Already cleaned up"); } request.setAttribute("cleanedUp", Boolean.TRUE); } }
/** * Transfer the received file to the given destination file. * <p>The default implementation simply copies the file input stream. * @since 5.1 * @see #getInputStream() * @see #transferTo(File) */ default void transferTo(Path dest) throws IOException, IllegalStateException { FileCopyUtils.copy(getInputStream(), Files.newOutputStream(dest)); }
@Override public String getMultipartContentType(String paramOrFileName) { MultipartFile file = getFile(paramOrFileName); if (file != null) { return file.getContentType(); } else { return null; } }
/** * This implementation returns a description that has the Multipart name. */ @Override public String getDescription() { return "MultipartFile resource [" + this.multipartFile.getName() + "]"; }
@Override public void doFilter(ServletRequest originalRequest, ServletResponse response) { if (originalRequest instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest request = (MultipartHttpServletRequest) originalRequest; files.addAll(request.getFileMap().values()); } } };
/** * Add a file to this request. The parameter name from the multipart * form is taken from the {@link MultipartFile#getName()}. * @param file multipart file to be added */ public void addFile(MultipartFile file) { Assert.notNull(file, "MultipartFile must not be null"); this.multipartFiles.add(file.getName(), file); }
/** * Add a file to this request. The parameter name from the multipart * form is taken from the {@link MultipartFile#getName()}. * @param file multipart file to be added */ public void addFile(MultipartFile file) { Assert.notNull(file, "MultipartFile must not be null"); this.multipartFiles.add(file.getName(), file); }