Una de las características más interesantes de Alfresco ECM es la
variedad de protocolos que proporciona para autenticarnos y realizar
acciones sobre el repositorio, ya sean unidades de red compartidas o
las diferentes API’s disponibles. Esto es debido principalmente a la
utilización de estándares, que a medio/largo plazo se convierten en
una clara ventaja tecnológica frente a otros stacks más cerrados, al
permitirnos una capacidad de integración de este modo con todo tipo de
herramientas de terceros. Entre esos protocolos (y las APIS de acceso)
podemos destacar: Webdav, FTP, CIFS, NFS, IMAP, REST, Webservices o CMIS.
Esto permite la carga de archivos de numerosas maneras
utilizando esos protocolos (en
un post anterior anterior hablabamos de data ingestion a través del
envio de correos electrónicos). Obviando las unidades en red
CIFS y NFS a un lado y dejando a otro el ya comentado método de cargar
datos mandando email, podemos usar pequeños uploaders con numerosos
protocolos como Webdav, FTP, REST o CMIS con muy poco esfuerzo. Por
ejemplo con el comando curl puedo usar el canal ftp de la siguiente manera:
curl -T sinadura3.tgz ftp://alfie.zylk.net/Alfresco/sinadura
--user cesar:secret
o incluso mejor, utilizar el canal webdav, que puede securizarse:
curl -T sinadura3.tgz https://alfie.zylk.net/alfresco/webdav/sinadura
--user cesar:secret
Otra opcion es utilizar la capa REST con un pequeño script de
shell que invoca a curl
y en el que hacemos un post del archivo
en cuestión:
#!/bin/bash # # Alfresco upload script with CURL by LouiSe@louise.hu # # Usage: alfresco_uploader.sh # # ./alfresco_uploader.sh /tmp/some.pdf someSite documentLibrary someDir # ALFRESCO_SERVER="http://alfie.zylk.net:8080/alfresco" USERNAME="cesar" PASSWORD="secret" #CURL_VERBOSE=-v CURL_VERBOSE=-s CURL_METHOD=POST FILENAME=`basename $1` MIMETYPE=`file --brief --mime-type $1` UPLOAD_SERVICE_URL=${ALFRESCO_SERVER}/service/api/upload echo "Uploading: ${FILENAME} ($MIMETYPE) to ${ALFRESCO_SERVER}" curl ${CURL_VERBOSE} -k -X ${CURL_METHOD} --user "${USERNAME}":"${PASSWORD}" -F filedata=@$1 -F siteid="$2" -F containerid="$3" -F uploaddirectory="$4" -F filename="${FILENAME}" -F contenttype="${MIMETYPE}" "${UPLOAD_SERVICE_URL}" | grep 'description' | cut -d ':' -f 2 | tr -d '"'
Este script esta sacado de http://louise.hu/poet/?p=4529
Otra estrategia posible es utilizar el estandar CMIS con un pequeño
script en python
(con las librerías cmislib):
#! /usr/bin/python from cmislib.model import CmisClient from sys import argv client = CmisClient('http://alfie.zylk.net:8080/alfresco/service/cmis', 'cesar', 'secret') repo = client.defaultRepository someFolder = repo.getObjectByPath('/'+argv[2]) someFolder.getTitle() someFolder.getProperties() someFile = open(argv[1], 'r') someDoc = someFolder.createDocument(argv[1], contentFile=someFile)
o su equivalente en php:
<?php require_once ('cmis_repository_wrapper.php'); $repo_url = "http://alfie.zylk.net:8080/alfresco/service/cmis"; $repo_username = "cesar"; $repo_password = "secret"; $filename = $_SERVER["argv"][1]; $repo_folder = $_SERVER["argv"][2]; if ($repo_username == "alf_ticket") { $client = new CMISService($repo_url, null, null, array ( $repo_username => $repo_password )); } else { $client = new CMISService($repo_url, $repo_username, $repo_password); } $myfolder = $client->getObjectByPath($repo_folder); $file = fopen($filename,"r"); $contents = fread($file, filesize($filename)); $fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic'); $mime_type= $fi->buffer(file_get_contents($filename)); fclose($file); $obj_doc = $client->createDocument($myfolder->id, $filename, array (), $contents, $mime_type);