cancel
Showing results for 
Search instead for 
Did you mean: 

WebScript Subir archivo aplicacion externa

lexcorp
Champ in-the-making
Champ in-the-making
Hola todo el mundo…

Estoy tratando de integrar alfresco con una aplicacion externa, la cual muestro a continuacion:

[img]http://img137.imageshack.us/img137/470/form1.png[/img]

Como pueden observar es una aplicacion sencilla que tiene como finalidad guardar la informacion de un empleado, si observan hay una seccion dentro del formulario para que el empleado pueda subir su curriculum vitae, para esto pretendo utilizar un boton "Subir Archivo" el cual llamara un WebScript de Alfresco que solicite un usuario y contraseña ya sea a traves del cliente web de alfresco o con una ventana emergente del navegador y posteriormente debera mostrar el formulario para subir el archivo a Alfresco:

[img]http://a.imageshack.us/img835/8874/form2.png[/img]

Una vez que el usuario introduce un usuario y contraseña y accede correctamente, se mostrara el siguiente formulario para subir el archivo en el espacio correspondiente ejemplo: "Mis Curriculums"

[img]http://a.imageshack.us/img835/3866/form3.png[/img]


Actualmente me desempeño como administrador del sistema alfresco, sin embargo tengo muy poca o nula experiencia en desarrollo de aplicaciones, sin embargo he leido que para hacer uso de los WebScripts no es necesario tener experiencia en programacion…

Para realizar esta integracion he leido la wiki de alfresco especificamente la seccion de "WebScripts", he identificado la ubicacion de los webscripts dentro de alfresco, tambien he realizado algunos ejemplos.

Buscando en la red me encontre con el siguiente ejemplo para subir archivos con webscripts:

http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/help/wwhelp/wwhimpl/common/html/wwhelp....

Mi ambiente de trabajo es el siguiente:
Alfresco Version 3.3g Community
Base de datos MySql
5 REPLIES 5

lexcorp
Champ in-the-making
Champ in-the-making
He realizado con exito el siguiente ejemplo:

http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/help/wwhelp/wwhimpl/common/html/wwhelp....

Este ejemplo sube un archivo a alfresco pero en un espacio especifico el "Company Home", sin embargo tiene algunas particularidades que necesito extender las cuales son las siguientes y es donde requiero de su apoyo:

1.- (Autenticacion/Seguridad) Este WebScript en su archivo descriptor XML cuenta con la autenticacion de tipo "user" que por lo que tengo entendido al momento de llamar el WebScript debe solicitar usuario y contraseña ya sea desde el cliente web de alfresco o desde una ventana emergente del navegador web, sin embargo realizando pruebas me encuentro con que al momento de ejecutar el script este no me solicita ningun usuario y contraseña sino que en automatico ingresa como usuario admin, quisiera saber porque no me solicita un usuario y contraseña.

<webscript>
<shortname>File Upload Form Sample</shortname>
<description>Form for uploading file content and metadata into Repository</description>
<url>/sample/upload</url>
<authentication>user</authentication>
</webscript>

La llamada la realizo de la siguiente forma: en la barra de direcciones de mi navegador ingreso esta url:

http://localhost:8080/alfresco/service/sample/upload

Yo espero que me solicte un usuario y contraseña, sin embargo no me solicita nada e inmediatamente despues me muestra el formulario para subir el archivo, entiendo que por defecto ingresa con las credenciales del usuario admin, ¿como puedo hacer que me solicite el usuario y contraseña?

lexcorp
Champ in-the-making
Champ in-the-making
2.- (Espacio Company Home por defecto) Como comentaba anteriormente este WebScript sube un archivo a Alfresco sin embargo lo coloca por defecto en el espacio "Company Home", ahora bien si yo ingreso con un usuario que no tengo permisos de administrador o que no tenga permisos en el espacio Company Home entiendo que me generara un error, aqui es donde necesitaria tambien de su ayuda, el codigo para subir el documento es el siguiente:

var filename = null;
var content = null;
var title = "";
var description = "";
// locate file attributes
for each (field in formdata.fields)
{
if (field.name == "title")
{
title = field.value;
}
else if (field.name == "desc")
{
description = field.value;
}
else if (field.name == "file" && field.isFile)
{
filename = field.filename;
content = field.content;
}
}
// ensure mandatory file attributes have been located
if (filename == undefined || content == undefined)
{
status.code = 400;
status.message = "Uploaded file cannot be located in request";
status.redirect = true;
}
else
{
// create document in company home for uploaded file
upload = companyhome.createFile("upload" + companyhome.children.length + "_" + filename) ;
upload.properties.content.write(content);
upload.properties.content.mimetype = "UTF-8";
upload.properties.title = title;
upload.properties.description = description;
upload.save();

// setup model for response template
model.upload = upload;
}

mapeav
Champ in-the-making
Champ in-the-making
buenos días Lexcorp,
has podido arreglar los problemas que tenías? porque yo tengo algunos parecidos

khulrtz
Champ in-the-making
Champ in-the-making
Supongo que ya es tarde xD pero buscando por google y tal he visto una manera de cambiar los enlaces de ese webscript no creo que sea el mas eficiente pero es el unico que tengo por ahora:

en lugar de poner esto:

upload = companyhome.createFile("upload" + companyhome.children.length + "_" +filename) ;

poned por ejemplo:

var dir1 = companyhome.childByNamePath("Sites");
var dirfinal = dir1.childByNamePath("sitioX");
upload = dirfinal.createFile("upload" + dirfinal.children.length + "_" +filename) ;


se que es muy cutre, pero funciona xD

cybermakoki
Champ in-the-making
Champ in-the-making
Hola,

Solo comentar un par de cosillas…

Para los webscripts, si lo estás ejecutando en el navegador y no te pide usuario y password es porque probablemente ya estés logueado en alfresco (prueba a entrar en http://localhost:8080/alfresco y comprueba si efectivamente estás logueado).

Si un usuario no tiene permisos para crear documentos, el webscript devolverá un error de no autorizado o algo parecido, puedes comprobar si tiene permisos con el API javascript –> https://wiki.alfresco.com/wiki/4.0_JavaScript_API#Permission_and_Security_API

Y por ultimo, si lo que quieres es crear un documento en una carpeta distinta a company home, puedes hacerlo de varias formas:

Obtener mediante xpath el espacio:


  var espacio = search.xpathSearch("app:company_home/cm:Mi_x0020_carpeta")[0];
  var doc = espacio.createFile("upload" + espacio.children.length + "_" + filename);


O bien, como dice khulrtz obtener el espacio mediante un path:


  var espacio = companyhome.childByNamePath("Mi carpeta");
  var doc = espacio.createFile("upload" + espacio.children.length + "_" + filename);


Un saludo,
Patricia.