Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    permettere al server remoto di creare file txt sul client

    Ciao,
    spiego velocemente la situazione.
    1) ho un server remoto dove tengo i dati in cloud.
    2) un client che tramite pagine internet accede ai dati
    3) un programma che legge file TXT, li manda in stampa e restituisce l'esito sotto forma di TXT da leggere.il programma non è di proprietà, di conseguenza non ho modo di modificarne la struttura o il metodo di comunicazione.

    fino a poco tempo fa potevo eseguire tranquillamente il passaggio tramite JAVA e certificato home made.

    L'utente compila dei form, i dati vengono salvati e poi inviati a Java che riusciva a creare il file TXT in una directory preimpostata dove il programma di stampa è in ascolto (creazione automatica senza il tasto salva).
    Una volta stampato, il programma elimina il file e ne scrive uno per la risposta. Java quindi, che è rimasto in ascolto, legge il contenuto del file e lo riporta a video dove tramite una chiamata Ajax modifica il DB.

    Questo è come ha funzionato fino ad ora.
    per comodità, il client predefinito è Chrome (l'opzione -app è l'ideale)
    Il problema sorge con gli aggiornamenti di Chrome e quello che arriverà a settembre che rimuoverà completamente il supporto di JAVA.

    ho provato quindi a cercare delle alternative ma non ho trovato nulla di efficace.
    API I/O, FileSystem, FileDownload... ma tutte queste api creano file criptati all'interno del sandbox, non accessibili al programma.

    come potrei fare per creare il file in una cartella XX accessibile o scrivere file nel sandbox in modo che siano in chiaro (nome file, estensione, contenuto) e che siano accessibili dai programmi del client?

    Grazie.
    Daniele.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Java quindi, che è rimasto in ascolto, legge il contenuto del file e lo riporta a video dove tramite una chiamata Ajax modifica il DB.


    Java effettua della chiamate ajax? non è possibile...

    Il problema sorge con gli aggiornamenti di Chrome e quello che arriverà a settembre che rimuoverà completamente il supporto di JAVA.
    parli forse di applet java che girano sul client? Se il problema è java perchè hai scritto nella sezione javascript? Non è che stai confondendo java con javascript? sono due linguaggi completamente diversi che hanno in comune solo parte del nome. Se è cosi chiedi al moderatore di spostare la discussione nella sezione adatta, altrimenti spiega meglio, chrome non bloccherà mai javascript altrimenti il 90% dei siti non funzionerà più.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Quote Originariamente inviata da Vindav Visualizza il messaggio
    [COLOR=#333333]
    Java effettua della chiamate ajax? non è possibile...
    parli forse di applet java che girano sul client? Se il problema è java perchè hai scritto nella sezione javascript? Non è che stai confondendo java con javascript? sono due linguaggi completamente diversi che hanno in comune solo parte del nome. Se è cosi chiedi al moderatore di spostare la discussione nella sezione adatta, altrimenti spiega meglio, chrome non bloccherà mai javascript altrimenti il 90% dei siti non funzionerà più.
    Ciao,
    temo di non aver espresso bene il tutto.

    la pagina php, una volta ricaricata, lancia un applet java a cui vengono passati dei valori.
    l'applet a questo punto crea il file di testo che viene passato al programma(il quale converte il file TXT e stampa)
    una funzione javascript, richiama ogni tot secondi una funzione interna(pubblica) dell'applet che permette di leggere il file TXT di ritorno e restituirne il contenuto al client.
    a quel punto, con jquery(.post), viene caricato il dato risultante (OK / KO) sul DB.

    Il motivo per cui ho scritto qui è perchè chrome rimuoverà a breve (1 mese) e definitivamente il supporto NPAPI.
    Quindi il plugin JAVA(e anche silverlight, fascebook video) non sarà più utilizzabile ed ho necessità di una soluzione alternativa.
    Ho ritenuto opportuno spiegare la situazione attuale per cercare la soluzione alternativa adatta.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ok, ora è chiaro, tutte queste operazioni che vengono effettuate lato client dall'applet non puoi effettuarle lato server con php o java? da quello che scrivi mi pare di si.

    Con javascript richiamerai ogni tot secondi una risorse server che effettuerà le operazioni necessarie.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Quote Originariamente inviata da Vindav Visualizza il messaggio
    Ok, ora è chiaro, tutte queste operazioni che vengono effettuate lato client dall'applet non puoi effettuarle lato server con php o java? da quello che scrivi mi pare di si.
    Con javascript richiamerai ogni tot secondi una risorse server che effettuerà le operazioni necessarie.
    Ciao, come avevo premesso mi trovo nella situazione in cui:
    1- il programma è sul client.
    2- navigo da una pagina internet su chrome
    3- il server è fisicamente in hosting remoto.

    lavorando lato server andrei a creare il file sul server vero e proprio.
    quello che attualmente faccio con JAVA(e che devo fare con javascript o altro metodo) è bucare il SandBox per permettere al programma di stampa presente sul client, di leggere il file.
    normalmente per motivi di sicurezza non è possibile farlo ma creando un certificato apposito e configurando JAVA con delle eccezioni potevo farlo.

    per fare quello che dici, dovrei installare un piccolo server su ogni client e togliere la restrizione di login da localhost dal DB (dato che non ho per forza un IP statico sul client.)

    La soluzione era quindi qualcosa con Javascript.
    Tra le API che guardavo, utilizzabili su Chrome, c'è la possibilità di creare / modificare file sul pc client da remoto ma il problema è che questi file sono salvati nel sandbox.
    in pratica viene creata un area privata all'interno dell'HD dell'utente con i file scaricati.
    Il problema è che questi file sono leggibili solo tramite client e non programmi esterni come word o altro.
    Va aggiunto inoltre che il file viene criptato trasformandolo in chunk di cartelle e file.
    A me invece serve che il file rimanga integro, altrimenti il programma di stampa non sa quale file leggere.
    Ultima modifica di nexus; 16-07-2015 a 17:13

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Accertato e accettato che per ovvi motivi di sicurezza l'utente ha l'esclusiva facolta' di decidere se e cosa permettere di modificare sul proprio pc, e che ogni richiesta in senso contrario viola il regolamento di questo forum, mi sfugge la complicazione di tutto cio', ovvero se non sia meglio istruire gli utenti all'uso di un normale download e seguente lancio di un programma locale...

    Prima ti rendi conto dell'impossibilita' della tua richiesta (dovuta essenzialmente alle protezioni insite nel javascript) e piu' tempo avrai per valutare procedure alternative...
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Indubbiamente sono conscio della difficoltà della cosa.

    a dire il vero le soluzioni alternativa sono non usare chrome ma altri sistemi come FF, IE o Safari.
    oppure, come scrivevo prima, creare un server locale.
    questo però rimuove parte della funzionalità.

    Giusto per chiarezza, non è un tentativo di bucare o violare la privacy dell'utente. In quanto attualmente è l'utente che accetta il servizio/certificato di JAVA. inoltre la "pagina web" in questione è un servizio privato, attivato su richiesta e non raggiungibile da motore di ricerca.
    Lo scopo reale è quello di mettere in comunicazione lato client e lato server tramite una cartella condivisa presente nel client.
    Dove il server ha accesso solo a quella cartella (chrone.fileSystem, chrone I/O, chrone.download) e l'utente finale abbia la possibilità di leggere/cancellare/scrivere in quella cartella.

    Inoltre con javascript non chiedo di accedere ai dati dell'utente (come accade negli editor di testo online) ma di capire se l'utente può accedere a file inseriti tramite chrome.fileSystem o altra API
    Tramite questa API è attualmente possibile creare/copiare/cancellare/modificare file e renderli disponibili per il singolo sito o per tutti.
    Quindi quello che eseguo con JAVA è già eseguibile.

    La parte restante è capire se l'utente finale dal suo pc, usando "esplora file" o altri programmi, possa o meno accedere a quei file senza usare il browser (se si installa un plugin è possibile accedere e visualizzare i file senza problemi usando il dev. tool). O se abbia controllo su quella cartella.

    Facendo dei test con chrone.fileSystem ad esempio, ho trovato che il file test.TXT non compare, al suo posto ci sono più file e cartelle + un file che probabilmente tiene le informazioni su come ricomporlo.
    questo rende però impossibile all'utente finale capire cosa contiene il file o eliminarlo.

    Quando penso di aver trovato qualche informazione utile, poi risulta essere qualcosa relativo a chronebook.

  8. #8
    Quote Originariamente inviata da nexus Visualizza il messaggio
    Lo scopo reale è quello di mettere in comunicazione lato client e lato server tramite una cartella condivisa presente nel client.
    Dove il server ha accesso solo a quella cartella (chrone.fileSystem, chrone I/O, chrone.download) e l'utente finale abbia la possibilità di leggere/cancellare/scrivere in quella cartella.
    Potresti utilizzare il Local Storage di HTML5, sarebbe una "cartella condivisa" tra server e client, e potresti, tramite js, dare la possibilità all'utente di editare i contenuti dello storage stesso.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    avevo letto del local storage di Html5, tra cui l'utilizzo dell'app google drive.
    tra le varie trovato delle informazioni per la gestione dei file con l'ausilio del retainEntry. In questo modo l'operazione/il permesso di scrittura viene dato una volta sola (la pagina viene ricaricata dalle 200 alle 800 volte)

    la cosa "particolare" è che l'utente scarica e installa un applicazione.
    l'applicazione contiene una libreria per comunicare con tutte le stampanti.

    A questo programma locale viene attribuita una cartella di destinazione (decisa dall'utente)
    una volta avviato, il programma legge il contenuto della cartella ogni xx secondi e verifica se esiste un file specifico.
    nomefile.xxx
    il file è un semplice file di testo txt con l'estensione rinominata con il codice della porta COME dove si vuole stampare. es test.001
    una volta stampato, scrive nella cartella un file del tipo output.001 sempre di tipo testo


    ora, SE ci fosse il modo che il brower dopo aver creato il file lo rendesse in chiaro all'utente (non tramite browser), sarebbe sufficiente dire al cliente la cartella di destinazione ( dello storage ) dove il programma locale deve andare a leggere il file e scrivere l'esito.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.