2016-06-26 7 views
0

ich ein JSON mit zwei Knoten erhalten:Mule & Java - Byte [] in Datei

  1. Der Dateinamen mit der Erweiterung-String.
  2. Die Inhalt - Codierte mit Base64 - String.

Mit diesen Daten, die ich zu will setzten ein Objekt in meinem Amazon S3 aber es erfordert einen File Typ-Parameter.

Ich benutze diese auch zu byte[] zu verwandeln:

byte[] arrayDecoded = Base64.getDecoder().decode(node2JSON); 

ich das byte [] in Datei in einer Java-Klasse Java umwandeln will und es dann auf Amazon S3 setzen.

Wie kann ich das tun, ohne Dateien aus einem Verzeichnis zu verwenden?

Antwort

1

Sie können die Methode AmazonS3#putObject(String bucketName, String key, InputStream input,ObjectMetadata metadata) verwenden, um die Daten hochzuladen, ohne eine Datei in das Dateisystem zu schreiben.
Geben Sie die Länge der Datei in den Metadaten an und verwenden Sie einen ByteArrayInputStream, um Ihr Byte-Array in einen Eingabestream zu konvertieren.

ObjectMetadata objectMetadata = new ObjectMetadata(); 
objectMetadata.setContentLength(data.length); 
amazonS3.putObject(bucketName, filename, new ByteArrayInputStream(data), objectMetadata); 
+0

Dank, das war, dass ich brauchte! – gtx911

0

Sie könnten den S3 Connector in Mule verwenden.

Verwendung Set-Nutzlast mit # [org.apache.commons.io.IOUtils.toByteArray (node2JSON)]