160 messaggi dal 08 dicembre 2003
Buonasera a tutti, il mio problema è questo:
in vb.net non riesco a verificare l'esistenza di una directory lato client.
Ho importato il NameSpace System.io ed utilizzo l'istruzione My.Computer.FileSystem.DirectoryExists("nomedirectory")
Con Visual Studio 2015 in modalità debug funziona correttamente, ma non appena la metto Online, su dominio windows in hosting su Aruba, non va.
Grazie...
10.903 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Con Visual Studio 2015 in modalità debug funziona correttamente ma non appena la metto Online, su dominio windows in hosting su Aruba, non va.

E' normale che sia così. Infatti, mentre sei in debug, il client e il server girano sullo stesso PC e quindi riesci a leggere le cartelle del client con codice lato server.

Invece, quando pubblichi l'applicazione nel server di Aruba, il codice server-side potrà solamente leggere le cartelle del server Aruba e non avrà modo di arrivare a leggere quelle del client.

Con un'applicazione web non è possibile rovistare nel disco del client.
L'unica cosa che puoi fare è chiedere al client di selezionare un file mediante un campo <input type="file" (cioè un controllo asp:FileUpload).

Spiega bene cosa devi realizzare, vediamo se esiste un modo alternativo.

ciao,
Moreno
Modificato da BrightSoul il 05 febbraio 2018 18.22 -

Enjoy learning and just keep making
160 messaggi dal 08 dicembre 2003
Ciao... prima di tutto grazie per l'attenzione.
Devo generare un file .txt in una cartella specifica del client poichè c'è un'applicazione in background che appena rileva la presenza del file in quella cartella manda in stampa uno scontrino sul registratore di cassa.
10.903 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego.


Devo generare un file .txt in una cartella specifica del client

Ok, chiaro. Non puoi decidere tu dove salvare il file. Ti serve la collaborazione del client.
Le soluzioni sono due:
  • Chiedi al client di fare tasto destro -> Salva con nome... in modo che sia lui stesso a scegliere di scaricare il file .txt nella cartella in cui deve essere salvato (è un'operazione manuale che il client deve fare);
  • Oppure, avvii tu il download del file (il client dovrà cliccare "Salva" o "Mantieni" a seconda del browser che sta usando) e fai in modo che l'applicazione per windows che gira in background vada a pescare i file dalla cartella "Downloads" sul PC dell'utente. La cartella "Downloads" è quella predefinita in cui vengono posti i file scaricati. Il problema è che TUTTI i file scaricati dall'utente finiranno in quella cartella e quindi l'applicazione che gira in background dovrà saper individuare i file che le interessano.


In alternativa, ma solo se hai scritto tu l'app in background, puoi rinunciare al file .txt e usare invece un protocollo personalizzato, come scontrino://.
Infatti, un'applicazione per Windows (nel tuo caso quella che stampa gli scontrini) può scrivere nel registro di Windows per gestire un protocollo personalizzato, come scontrino://
Hai presente quando cliccando un link http:// si apre il browser? Ecco, allo stesso modo puoi far sì che navigando verso un URL scontrino:// la tua applicazione sia chiamata a gestire quell'url.

Qui è scritto come fare:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

Fatto questo, dall'applicazione web fai una ridirezione verso un url tipo scontrino://qui-dati-da-stampare-sullo-scontrino.
La tua app in background verrà chiamata da Windows e le verrà passato l'URL. Fai il parsing dell'URL per capire cosa stampare sullo scontrino.

Ti posso garantire che funziona, l'ho già usato in uno scenario identico al tuo, con applicazione web + programma windows in background + registratore di cassa.

I dati non devono essere troppi (es. per sicurezza starei entro i 2KB)

ciao,
Moreno
Modificato da BrightSoul il 05 febbraio 2018 19.15 -

Enjoy learning and just keep making
160 messaggi dal 08 dicembre 2003
Purtroppo il software che gira in background non l'ho scritto io, fa parte della dotazione del registratore di cassa e, visto che sono circa 10 punti vendita tutti con lo stesso registratore, lungi da me proporre di sostituirli tutti per ovvi motivi economici.

Secondo te c'è la possibilità di fare questo:
- Genero server-side il file .txt
- eseguo una sorta di copia/incolla dal server al client... una sorta di ftp per capirci o qualcosa di simile.

Qualsiasi soluzione mi va bene... mi manca solo questo per consegnare.
Grazie ancora.
10.903 messaggi dal 09 febbraio 2002
Contributi

- eseguo una sorta di copia/incolla dal server al client... una sorta di ftp per capirci o qualcosa di simile.

Ascolta... so che sei vicino al rilascio ma prendi coscienza che non riuscirai a salvare il file .txt là dove vuoi salvarlo. Né col copia-incolla né con altri artifici.

La cosa che più si avvicina al salvataggio di un file da webapp è la "File and Directory Entries API" che è NON standard e il cui uso è sconsigliato in produzione. Oltretutto, il file viene salvato dal browser in un filesystem virtuale e sandboxato, che non è certamente il vero hard disk dell'utente.
Come leggi qui:
https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction

You also cannot read or write files to an arbitrary folder (for example, My Pictures and My Documents) on the user's hard drive.


Ti ripropongo le soluzioni del post precedente:
  • Chiedi all'utente di salvare il file .txt nella cartella designata (ma non dai una buona user experience agli utenti)
  • Scrivi tu una seconda applicazione per Windows che dovrà girare in background e che si registrerà per gestire il protocollo scontrino://. L'applicazione si limiterà a scrivere il file .txt in base ai dati giunti da URL. In mezza giornata te la cavi.


ciao,
Moreno
Modificato da BrightSoul il 05 febbraio 2018 19.39 -

Enjoy learning and just keep making
160 messaggi dal 08 dicembre 2003
Ok... ti ringrazio per l'interesse dimostrato.
Credo che ti 'scoccerò' di nuovo per un aiuto sull'applicazione consigliata.
Nel frattempo mi studio un pò la cosa.
Arigrazie e buona serata.
160 messaggi dal 08 dicembre 2003
Rieccomi qui... la proposta di far salvare il file da browser non è stata accettata dal cliente, motivata da "...i miei utonti non sono in grado di fare questo."
Quindi mi ritrovo a chiedere il tuo aiuto.
In sintesi tutto deve essere 'trasparente' per l'utente... cosa mi consigli considerando che non ho scritto io l'app che gira in background? Tu personalmente come risolveresti il problema? Hai qualche link e/o esempio di codice da cui partire?
Come sempre grazie per l'aiuto.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.