Te damos la bienvenida a nuestra web, ahora hallarás la solucíon de lo que andabas buscando.
Solución:
org.springframework.web.multipart.MultipartFile
es una interfaz, por lo que primero necesitará trabajar con una implementación de esta interfaz.
La única implementación que puedo ver para esa interfaz que puede usar lista para usar es org.springframework.web.multipart.commons.CommonsMultipartFile
. La API para esa implementación se puede encontrar aquí
Alternativamente como org.springframework.web.multipart.MultipartFile
es una interfaz, puede proporcionar su propia implementación y simplemente envolver su byte array. Como un ejemplo trivial:
/*
*
* Trivial implementation of the @link MultipartFile interface to wrap a byte[] decoded
* from a BASE64 encoded String
*
*/
public class BASE64DecodedMultipartFile implements MultipartFile
private final byte[] imgContent;
public BASE64DecodedMultipartFile(byte[] imgContent)
this.imgContent = imgContent;
@Override
public String getName()
// TODO - implementation depends on your requirements
return null;
@Override
public String getOriginalFilename()
// TODO - implementation depends on your requirements
return null;
@Override
public String getContentType()
// TODO - implementation depends on your requirements
return null;
@Override
public boolean isEmpty()
@Override
public long getSize()
return imgContent.length;
@Override
public byte[] getBytes() throws IOException
return imgContent;
@Override
public InputStream getInputStream() throws IOException
return new ByteArrayInputStream(imgContent);
@Override
public void transferTo(File dest) throws IOException, IllegalStateException
new FileOutputStream(dest).write(imgContent);
Esta respuesta ya ha sido respondida anteriormente. Recientemente estuve trabajando en el requisito de convertir byte array objeto a objeto multipartfile. Hay dos maneras de lograr esto.
Enfoque 1:
Use el CommonsMultipartFile predeterminado donde usará el objeto FileDiskItem para crearlo. Ejemplo:
Approach 1:
Use el CommonsMultipartFile predeterminado donde usará el objeto FileDiskItem para crearlo. Ejemplo:
FileItem fileItem = new DiskFileItem("fileData", "application/pdf",true, outputFile.getName(), 100000000, new java.io.File(System.getProperty("java.io.tmpdir")));
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
Enfoque 2:
Cree su propio objeto de archivo multiparte personalizado y convierta el byte array a multipartfile.
public class CustomMultipartFile implements MultipartFile
private final byte[] fileContent;
private String fileName;
private String contentType;
private File file;
private String destPath = System.getProperty("java.io.tmpdir");
private FileOutputStream fileOutputStream;
public CustomMultipartFile(byte[] fileData, String name)
this.fileContent = fileData;
this.fileName = name;
file = new File(destPath + fileName);
@Override
public void transferTo(File dest) throws IOException, IllegalStateException
fileOutputStream = new FileOutputStream(dest);
fileOutputStream.write(fileContent);
public void clearOutStreams() throws IOException
if (null != fileOutputStream)
fileOutputStream.flush();
fileOutputStream.close();
file.deleteOnExit();
@Override
public byte[] getBytes() throws IOException
return fileContent;
@Override
public InputStream getInputStream() throws IOException
return new ByteArrayInputStream(fileContent);
Así es como puede usar el objeto CustomMultipartFile anterior.
String fileName = "intermediate.pdf";
CustomMultipartFile customMultipartFile = new CustomMultipartFile(bytea, fileName);
try
customMultipartFile.transferTo(customMultipartFile.getFile());
catch (IllegalStateException e)
log.info("IllegalStateException : " + e);
catch (IOException e)
log.info("IOException : " + e);
Esto creará el PDF requerido y lo almacenará en
java.io.tmpdir con el nombre intermedio.pdf
Gracias.
Aquí puedes ver las reseñas y valoraciones de los usuarios
Nos encantaría que puedieras compartir esta noticia si te valió la pena.