Subir ficheros a alfresco con Api Rest 5.2 con PHP

cancel
Showing results for 
Search instead for 
Did you mean: 
gonzalez
Active Member

Subir ficheros a alfresco con Api Rest 5.2 con PHP

Hola, tengo problemas al intentar subir ficheros con php a la api de alfresco 5.2, se crea el nodo con sus datos y todo ok, pero se genera un fichero vacío, este es mi código:

$ls_url = $this->getLs_url() . '/alfresco/api/-default-/public/alfresco/versions/1/nodes/-my-/children';

estos son los últimos headers con los que probé:

$headers = array(
'Authorization' => $la_auth['Authorization'],
'Accept' => 'multipart/form-data',
'filedata' => $lo_document['tmp_name']
);

me estoy volviendo loco y no sé qué más probar, alguien tiene idea en que estoy fallando o la manera de hacerlo?

Saludos y gracias

10 Replies
angelborroy
Alfresco Employee

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

¿Has probado si te funciona con CURL?

curl -X POST -H "Authorization: Basic dGVzdDp0ZXN0" -H "Content-Type: multipart/form-data; boundary=----FormBoundary7MA4YWxkTrZu0gW" -F "filedata=@test.txt" "http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/-my-/children"

Hyland Developer Evangelist
gonzalez
Active Member

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

Acabo de intentarlo y me sale el siguiente error:

{"error":{"errorKey":"No disk space available","statusCode":409,"briefSummary":"05070128 No disk space available","stackTrace":"For security reasons the stack trace is no longer displayed, but the property is kept for previous versions","descriptionURL":"https://api-explorer.alfresco.com"}}

Alguna idea? Smiley Frustrated

angelborroy
Alfresco Employee

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

No te queda espacio disponible en el disco duro.

Hyland Developer Evangelist
gonzalez
Active Member

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

Eso pensaba yo pero al cargar un fichero por el cliente del alfresco (share) si que me deja, pero por cURL desde PHP me salta ese error diciendo que no hay espacio, alguna idea?

angelborroy
Alfresco Employee

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

¿Puedes mirar si sale alguna traza adicional en el catalina.out del servidor?

Hyland Developer Evangelist
gonzalez
Active Member

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

No aparece nada en catalina.out, desde POSTMAN al intentar hacer un multipart/form-data con el auth correcto el fichero, el name y el nodeType también me salta el mismo error, no disk available

{
"error": {
"errorKey": "No disk space available",
"statusCode": 409,
"briefSummary": "05120050 No disk space available",
"stackTrace": "For security reasons the stack trace is no longer displayed, but the property is kept for previous versions",
"descriptionURL": "https://api-explorer.alfresco.com"
}
}

En cambio si voy al share y realizo un upload file se sube correctamente...el alfresco tiene 8gb libres y los documentos que utilizo son 29kb, puede ser algo relacionado con permisos?

angelborroy
Alfresco Employee

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

Parece que tiene que ver con esto:

https://issues.alfresco.com/jira/browse/MNT-7213

Metieron un parche algo "extraño" para solucionarlo:

https://github.com/Alfresco/community-edition-old/blob/master/projects/remote-api/config/alfresco/te...

¿No le estás enviando un POST con form/multipart? 

Hyland Developer Evangelist
gonzalez
Active Member

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

  $curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_PORT => "8080",
CURLOPT_UPLOAD => 1,
CURLOPT_INFILE => $fp,
CURLOPT_INFILESIZE => filesize($lo_document['tmp_name']),
CURLOPT_URL => $this->getLs_url() . "/alfresco/api/-default-/public/alfresco/versions/1/nodes/-my-/children",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $la_file,
CURLOPT_HTTPHEADER => array(
"authorization: ".$la_auth['Authorization'],
"accept: multipart/form-data",
"content-type: multipart/form-data; boundary=----WebKitFormBoundary".md5(time()),
"cache-control: no-cache"
)
));

lo tengo así, en POSTMAN he conseguido subir un fichero, pero al intentar replicarlo en el cURL por php no consigo hacerlo, en POSTMAN me pasaba que no ponía la cabecera accept: multipart/form-data y en su lugar ponía Content-Type por eso no me dejaba, en cURL si quito Content-Type me sale el siguiente error:

{"error":{"errorKey":"Could not read content from HTTP request body: Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: java.io.BufferedReader@2cae9bb1; line: 1, column: 2]","statusCode":400,"briefSummary":"05120112 Could not read content from HTTP request body: Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: java.io.BufferedReader@2cae9bb1; line: 1, column: 2]","stackTrace":"For security reasons the stack trace is no longer displayed, but the property is kept for previous versions","descriptionURL":"https://api-explorer.alfresco.com"}}

Supongo que POSTMAN añade el Content-Type al hacer el send, alguna idea de porque mi petición cURL no le gusta a alfresco?

angelborroy
Alfresco Employee

Re: Subir ficheros a alfresco con Api Rest 5.2 con PHP

¿Has probado a generar el cliente PHP con el editor de swagger a partir del YAML de Alfresco? Quizá eso pueda darte una pista.

Editor de swagger: Swagger Editor 

YAML de Alfresco: https://raw.githubusercontent.com/Alfresco/rest-api-explorer/master/src/main/webapp/definitions/alfr... 

Hyland Developer Evangelist