Access to local files - Forum

Forum Navigation
VisualNEO Products: Web, Win and PixelNEO
You need to log in to create posts and topics.

Access to local files

Hi @luishp,  few questions:

  1. With PWA builds, can we simply access local files directly without opening the file dialog and getting users to load the file w/o permission?
  2. Any status on the mySQL support for local access? I've read from some forum that "alaSQL" might be a viable client-based alternative. I haven't explore them yet, but could it be used for local access when compiled as PWA?

Appreciate your advices...  thanks

Hi @ronnie, no PWAs can't access local files directly. There is a Chrome API to allow limited access to a limited portion of the local file system, but it is not standardized. Local file access for web apps is restricted for security reasons. You can use PhoneGap or NW.js (using NodeJS) instead if you really need file system access.

MySQL local access is already supported. You just need a local web server with MySQL installed. neoPHP Server does not includes MySQL for size reasons.

AlaSQL is a completely different approach with advantages and disadvantages.

I'm currently taking a look at LocalForage. It seems to me a viable solution for many situations.

Also notice the new deployment options for VisualNEO Web. NW.js provides full access to NodeJS and all it's libraries. I'm starting to explore possibilities here too.

Regards.

Hi @luishp, That's great... it's good to put local file access in development focus as with PWA, we can explore accessing local db files directly. Imagine creating a phonebook PWA app where the db is local in the device.  More developers would be tempted to explore VisualNeo Web as a viable alternative...

@luishp Estoy haciendo pruebas con una PWA para el alamacenamiento local-cache  de archivos de audio con el objetivo que se puedan ser accesibles a la aplicación en modo off-line.  Por defecto con la opción escogida en visulaneo (Offline copy of pages)se almacenan en cache si se carga el archivo pulsando un botón cuando estás conectado.  Lo que quiero es usar la opción Serving Cached media para que se carguen previamente y una vez offline se pueda acceder a los archivos. La aplicación para móvil es esta:

https://genmagic.net/lengua/eletrasmovil1

Y el código de la opción Serving Cached media es:

// This is the "serving cached media" service worker

const CACHE = "pwabuilder-offline";

importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');

self.addEventListener("message", (event) => {
  if (event.data && event.data.type === "SKIP_WAITING") {
    self.skipWaiting();
  }
});

workbox.loadModule('workbox-cacheable-response');
workbox.loadModule('workbox-range-requests');

workbox.routing.registerRoute(
  /.*\.mp4/,
  new workbox.strategies.CacheFirst({
    cacheName: CACHE,
    plugins: [
      new workbox.cacheableResponse.CacheableResponsePlugin({statuses: [200]}),
      new workbox.rangeRequests.RangeRequestsPlugin(),
    ],
  }),
);

Pero no funciona. No sé si se ha de modificar algo el cóodido o haya algún error.

@rrey, lo único que en principio hay que modificar es la ubicación del archivo workbox-sw.js. Así deberías poner:

importScripts('./js/workbox-sw.js');

en lugar de:

importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');

De todos modos, cuando dices "no funciona" no queda claro que es lo que no funciona exáctamente. En estos casos es muy importante estar atento a los mensajes que aparecen en la consola del navegador (F12) ya que suelen dar muchas pistas de lo que está pasando tras bastidores.

@luishp lo que no funciona es que al iniciar la app en modo offline el sonido no funciona lo que quiere decir que no se han descargado previamente en la memoria cache del móvil los archivos de sonido.  Seguiré probando.

 

Gracias.

Roger Rey

 

@rrey fíjate que si no se especifican en el service-worker los archivos que deben cachearse, es muy difícil que éste pueda saber cuáles son antes de haberlos descargado (no sabe que existen). Yo no he tenido posibilidad aun de probar el resto de service-workers que ofrece pwabuilder, pero si no recuerdo mal, algunos de ellos requiren este tipo de información.

Gracias a ti.

@luishp  He usado este código y he cambiado  mp4  por mp3.  No sé si abría que poner toda la lista de archivos mp3. Pero no sé interpretat de qué modo se haría. He elegido la opción Serving Cached media.

 

workbox.routing.registerRoute(
  /.*\.mp4/,

 

Open chat
1
Do you need more info?
Hi, do you have any doubt?