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
¿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"
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?
No te queda espacio disponible en el disco duro.
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?
¿Puedes mirar si sale alguna traza adicional en el catalina.out del servidor?
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?
Parece que tiene que ver con esto:
https://issues.alfresco.com/jira/browse/MNT-7213
Metieron un parche algo "extraño" para solucionarlo:
¿No le estás enviando un POST con form/multipart?
$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?
¿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...
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.