cancel
Showing results for 
Search instead for 
Did you mean: 

¿Cómo enviar ContentStream por POST a webscript personalizado?

josenavarrovarg
Confirmed Champ
Confirmed Champ

Hola, 

Estoy tratando de enviar el ContentStream de un archivo, el cuál a través de un archivo utilizando java. He buscado en Internet alguna forma pero no lo logro.
Lo que necesito es poder pasar este contenido un archivo que he creado con este webscript personalizado con POST, para así lograr que mi documento no esté vacío, así: 

Agradecería su ayuda, o alguna sugerencia de cambiar el modo del cómo quiero obtener el contenido y aplicarlo al documento.

PD: Hice esta pregunta porque en al anterior al parecer no pude expresar bien lo que necesito para darle solución a este problema en el que estoy pegado.

1 REPLY 1

josenavarrovarg
Confirmed Champ
Confirmed Champ

Ya conseguí solucionarlo, pero sin enviar InputStream, sino el archivo...

import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
//AlfTicket obtenido desde APi 'login' de Alfresco.
HttpPost post = new HttpPost("http://[IP]:[Puerto]/alfresco/service/[URLSegúnArchivoDescriptor]?alf_ticket=" + ticket);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//'file' es el argumento a enviar, fileDoc es el archivo a enviar.
builder.addPart("file", new FileBody(fileDoc));
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = httpClient.build().execute(post);

Luego, en el Web Script (js) lo tomo así: 

var file = null;
var name = args.name;

// Crea archivo
var doc = fldRut.createNode(name, "cm:content");

//Recorro el formdata para obtener el valor de file
for each (field in formdata.fields)
{
  //Se consulta si el campo file es un archivo
  if (field.name == "file" && field.isFile)
  {
   file = field;
   logger.log("Archivo encontrado. Se tratará de guardar su contenido");
  }
}

doc.properties.content.write(file.content);
doc.save();‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Luego todo lo demás para enviar respuesta al FreeMarker...