Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Uploaders simples en alfresco

Cesar Capillas
Cesar Capillas

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

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *