Saltar al contenido

Cómo convertir bytes array a MultipartFile

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *