2016-07-18 124 views
6

Sono interessato alla fattibilità di questo: Su una macchina preconfigurata avrò un'applicazione Web preinstallata, accanto ad una Apache-Suite. Quindi client e server sono uguali!Scrittura di file PDF da Web-App a chiavetta USB

In questo web-application Gli utenti possono drag and drop PDF-Files a un'USB-Icon.
Quindi l'app Web deve scrivere il PDF rilasciato su una chiavetta USB collegata.

Non ho mai fatto qualcosa di simile (scrivendo in USB), quindi sono abbastanza insicuro. E io sono ben consapevole dei browser restrizioni riguardanti Javascript e Filesystem-Access, ma ...

dopo una ricerca un po 'ho scoperto, che ci potrebbe essere qualche possibile e
rilevanti (Sono un Web -Piattaforma-Guy) soluzioni a questo:

  • fare una "Chrome App" con USB-permesso (fa questo funziona davvero)
  • Utilizzare PHP per trovare l'USB e poi scrivere ad esso? (come funzionerebbe sotto W indows)
  • Usa un po 'di Flash come mezzo uomo (non preferito)

Ora mi piacerebbe sapere:?

  1. Qualcuno ha qualche buona esperienza con possibilità prima citati?
  2. Qualcuno ha mai fatto qualcosa di simile? Ha funzionato? Quale strada hai scelto?
  3. Come faccio a sapere quale unità è stata montata l'USB e come potrei essere sicuro?
  4. Quali altre possibili soluzioni a questo problema ci sono?
+0

Il file deve essere salvato sull'USB o USB USB in cui è in esecuzione il server? –

+0

Il server verrebbe eseguito sulla macchina. I file dovrebbero essere scritti per cambiare/diverse chiavette USB. Ogni utente riceve una chiavetta USB come omaggio. –

+0

Quale tecnologia è in esecuzione sul server? Dato che si sta eseguendo un server sulla stessa macchina in cui verrà inserita la chiavetta USB, il proprio codice server potrebbe facilmente accedere al filesystem. Senza conoscere la tecnologia del back-end, non è probabile che tu possa ottenere alcun codice suggerito. Tieni presente che la sicurezza è una grande preoccupazione per questo tipo di app.Dal momento che le persone possono inserire una propria penna USB in questa macchina potrebbe essere un problema, a meno che non si blocchino le autorizzazioni sulla macchina. – mcgraphix

risposta

4

Si dispone di un sito Web ('interfaccia lato client') e un server back-end ('lato server') in esecuzione sulla stessa macchina. Questo ti dà 2 opzioni:

  1. lato client: scarica un file tramite il browser via HTTP GET e permettere all'utente di scegliere dove salvarlo.
  2. Lato server: crea le tue interazioni USB nel codice back-end (Node.js), come suggerisce @mcgraphix.

L'interazione con USB sul lato server offre la massima flessibilità. Inoltre, ci sono un certo numero di librerie che puoi sfruttare. Dirigersi verso npmjs.org e considerare, tra gli altri, il seguente nodo.js pacchetti lato server:

Con l'approccio server-side, avviare una richiesta di servizio Web quando l'utente completa l'azione di rilascio di trascinamento & sul client, e l'attuazione del Interazione USB all'interno del server (Express.js o simile) che serve la richiesta.

+0

Grazie mille per la tua risposta che mi dà più fiducia nel realizzare questo. Ottieni la taglia, perché _a) _ la tua prima opzione (ed è la semplicità creativa), che non ho nemmeno pensato e _b) _ la rilevanza per Node.js e _c) _ i link utili e il piccolo concetto-paragrafo . Speriamo che sia davvero buono, come sembra :) –

2

Se la lettera del bastone è noto, la scrittura di un file da PHP sarà semplice

file_put_contents('E:\\folder\\file.pdf', $data); 

Aggiornamento

si può leggere un elenco di unità in un menu a discesa e consentire ad un utente di selezionare un'unità di default di scrivere a

https://stackoverflow.com/a/8210132/696535

+0

Grazie per la risposta. Se funziona davvero così in PHP, cosa che testerò in futuro, ti fornirò un'altra generosità per te, solo per l'immediatezza della tua risposta :) –

0

la tua domanda è più una domanda di architettura piuttosto che una domanda specifica per il codice.

vostro web app (se ti ostini a una web app) dovrebbe avere due componenti principali, un lato componente server che può essere dato comandi arbitrari, e un componente lato client (javascript utilizzando XMLHttpRequest) che può fare richiede al componente lato server di eseguire detti comandi arbitrari.

Quindi il componente lato server, il componente che serve la tua pagina web dovrebbe avere un codice lato server in grado di scrivere il tuo file PDF nel file system, probabilmente dovrebbe generare anche il file pdf piuttosto che farlo sul browser web .

Quale tecnologia si utilizza dipende da voi, se questo è PHP, .Net, Node.js ecc ...

Il succo generale è che si desidera un framework lato server che si occupa di richieste HTTP, nel tuo caso probabilmente una richiesta di posta dal lato client contenente il pdf codificato, e risponde di conseguenza. Associare una determinata route http per attivare la logica di salvataggio.

Il tuo post http richiesta al server conterrà il payload che è il file pdf in un particolare percorso, ad esempio, http://localhost/savepdf che qualsiasi stack tecnologico http ascolta (è necessario configurare tale)

Il componente lato server dovrebbe leggere i dati in arrivo, decodificarlo a seconda dei casi poi fare una file system richiesta di scrivere il payload ricevuto su disco .

+0

Ciao Daniel, grazie per la tua risposta. Molto probabilmente insisterò in una Web-App, perché è lì che ho più esperienza. Detto questo, il routing o l'architettura generale dell'applicazione non è _Hocus Pocus_ per me - ma la parte * richiesta del file system * è dove mi manca un po 'di comprensione e non ho esperienza. –

+1

Beh, dipende interamente da quale sistema operativo il tuo server funziona (sembra che Windows giudichi dalla tua domanda) e da quale stack tecnologico tu voglia usare. Ad esempio, se fosse C# .Net, useresti binarywriter per scrivere i contenuti su disco. Tutto ciò che devi fare è scegliere la tecnologia che desideri utilizzare, esaminare la documentazione e cercare la documentazione sulle operazioni del file system. –