Estoy consumiento un servicio que me trae como resultado un fichero que quiero almacenar en el lado del servidor. Tengo un proceso que ejecuto en 3ºPlano que es la petición HTTP al endpoint y la recogida del fichero que me devuelve como respuesta un arraybuffer. Cuando en la respuesta procedo a crear un VFile para guardar el contenido, este nunca se llega a crear en el servidor. Lo hago de este modo:
var fi = new VFile("/root/Velneo/data/app/archivo.txt");
if (fi.open(VFile.OpenModeWriteOnly | VFile.OpenModeTruncate))
{
fi.write(xhr.response);
fi.close();
}
Es un proceso JavaScript, si lo ejecuto desde el lado del cliente y lo guardo en una ruta Windows, si que se crea perfecto.
Lo curioso es que si yo por ejemplo ejecuto la instrucción Fichero:Abrir para crear un fichero desde un proceso Velneo en 3º Plano, si que lo hace en el servidor en la ruta correspondiente.
He probado distintas maneras, Utilizar un proceso velneo directamente ejecutando el Script y recogiendo su valor en una variable para crear el fichero y escribir su contenido con Fichero:Grabar Linea, pero el contenido llega vacio logicamente al ser un arraybuffer.
Casi seguro que habrás comprobado estas cosas, pero por si acaso:
1º ¿Aparece algún mensaje en el vAdmin?
2º ¿Has incluido la instrucción de importClass( “VFile” ); antes de la llamada?
importClass( "VFile" );
var fi = new VFile("/root/Velneo/data/app/archivo.txt");
if (fi.open(VFile.OpenModeWriteOnly | VFile.OpenModeTruncate))
{
fi.write(xhr.response);
fi.close();
}
Comprobé que hubiera importado la clase y también que no hubieran errores en el vAdmin, pero nada.
Intenté tambien con la clase VTextFile, pero tampoco funcionaba, unicamente guardaba el fichero ejecutado desde un cliente, no se que puede estar pasando si nada me da error… Próbe a pasar la variable con theRoot.setVar("FILE_CONTENT",xhr.response);
Pero claro, al ser un Object, se asigna vacio, no se que más intentar…
Segun la documentación… hay una funcion de la clase VByteArray que es setArrayBuffer, en la que te devuelve el contenido, siempre y cuando se ejecute como comando Ejecutar FileScript pero no se de donde se han sacado eso, por que no me la reconoce. Sería por rellenar la documentación
Efectivamente no es posible crear un fichero del lado del servidor, mediante JavaScript, excepto si es un servidor propio cloud de Velneo, en el caso de que tengas un servidor propio, es decir, algo estilo VPS ajeno, no te va a dejar crear ficheros por un tema de permisos…
Si la api es tuya, en vez de devolver el contenido del fichero, puedes generar una url y que te la devuelva, para asi descargar el fichero con Get Fichero URL