REST-API Upload files bigger than 2MB error
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎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
- Labels:
-
Language Groups
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-08-2018 10:10 AM
Confirmado, entonces era problema de tu código.
Gracias por el feedback.
