Una delle caratteristiche più interessanti di Alfresco ECM è la varietà di protocolli che consentono di autenticarsi ed eseguire azioni sul repository, tramite le unità di rete condivise o le diverse API disponibili. Ciò è principalmente dovuto all'uso di standard, che a medio-lungo termine diventa un chiaro vantaggio tecnologico rispetto ad altri stack più chiusi, e permette l'integrazione con ogni sorta di strumenti di terze parti. Tra questi protocolli (e API) possiamo evidenziare: WebDAV, FTP, CIFS, NFS, IMAP, REST, SOAP e CMIS.
Ignorando le unità di rete CIFS e NFS e lasciando da parte per ora il metodo di caricare i dati tramite e-mail, possiamo creare uploaders tramite numerosi protocolli quali WebDAV, FTP, o REST con poco sforzo. Ad esempio, con il comando curl posso utilizzare il canale FTP come segue:
curl -T sinadura3.tgz ftp://alfie.zylk.net/Alfresco/sinadura --user cesar:secret
O meglio ancora, usare il canale WebDAV, che può garantire più sicurezza:curl -T sinadura3.tgz https://alfie.zylk.net/alfresco/webdav/sinadura --user cesar:secret
Un'altra opzione è quella di utilizzare lo strato REST con un piccolo script che richiami curl per inviare il file in questione:#!/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 '\"'
Lo script è tratto da questo blog.
Un'altra strategia possibile è quella di utilizzare lo standard CMIS con un piccolo script in python (con le librerie 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 l'equivalente in PHP:
$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);