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); 





