Bloggers recientes

 

[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]
[ YouTube ]
Patricia Yagüe Mensajes: 3
Estrellas: 0
Fecha: 14/04/14
Cesar Capillas Mensajes: 144
Estrellas: 7
Fecha: 5/04/14
Silvia Rodriguez Mensajes: 6
Estrellas: 0
Fecha: 17/03/14

Archivo

Tags

noBlogo - El blog de zylk.net

«Atrás

Uploaders simples en alfresco

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 aquí.

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

Anterior
Comentarios
URL de Trackback: