02-06-2018 07:29 AM
Hola,
estoy haciendo llamadas a la url:
http://*****:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/{nodeId}/content?include=path
os paso el trozo de codigo donde hago la llamada:
HttpPut httpPut = new HttpPut(****url anterior****);
ByteArrayEntity byteArrayEntity = new ByteArrayEntity(content); // content es el array de bytes
httpPut.setEntity(byteArrayEntity);
httpPut.setHeader("Accept", "application/octet-stream");
httpPut.setHeader("Content-type", "application/octet-stream");
CloseableHttpResponse responseContent = client.execute(httpPut);
al hacer esta llamada si el fichero que paso es de menos de 2 MB me guarda el fichero correctamente, si el fichero supera los 2 MB se queda pensando, sin mostrar ningún error en el log y no me devuelve ninguna excepción.
he pensado que no fuera una regla que tengo activada para que me genere los pdf's de los documentos que subo, pero al desactivarla tampoco me funciono.
He revisado la configuración del alfresco y no veo nada raro.
Saludos
02-06-2018 11:40 AM
No parece que sea un problema de Alfresco sino de cliente (Apache HttpClient, entiendo por tu código).
¿Has probado a realizar la misma invocación con Postman o algún software similar? Así descartarías que sea debido a una configuración de Alfresco.
02-08-2018 09:55 AM
Hola,
No he probado con ninguno, al final he modificado toda la función y ya me ha funcionado.
Lo que se hacia aquí era primero crear del documento sin contenido y después un update para añadir el documento (era esta funciona que me fallaba), ahora lo que he hecho es lo siguiente:
CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpPost httpPost = new HttpPost(instance + "/nodes/" + folderNode.getEntry().getId() + "/children");
File tempFile = File.createTempFile(name, ".tmp");
tempFile.deleteOnExit();
FileOutputStream out = new FileOutputStream(tempFile);
IOUtils.copy(new ByteArrayInputStream(content), out);
FileBody fileBody = new FileBody(tempFile, ContentType.DEFAULT_BINARY, name);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("filedata", fileBody);
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
CloseableHttpResponse response = client.execute(httpPost);
String stringResponse = EntityUtils.toString(response.getEntity());
ObjectMapper mapper = new ObjectMapper();
NodeResponse newDocument = mapper.readValue(stringResponse, NodeResponse.class);
con esta modificación con una llamada lo hago todo y he realizado pruebas con ficheros de hasta 46MB y me ha funcionado.
Saludos
02-08-2018 10:10 AM
Confirmado, entonces era problema de tu código.
Gracias por el feedback.
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.