2015-12-15 15 views
5

Ho una pagina HTML che carica un fileOfRecords.txt che contiene l'elemento da aggiungere a un database (server .NET/C#). Carica il file funziona bene.In che modo un server .NET può inviare risultati di elaborazione file al client jQuery?

Sto tentando di fare in modo che il server invii uno stato al client mentre viene elaborata ogni riga del file.

Il metodo del controller esegue il ciclo su ogni riga aggiungendo gli elementi al database. Ad ogni iterazione vorrei inviare un messaggio al client con lo stato se è riuscito a fallire. Qualcuno può guidarmi su come questo viene fatto usando jQuery, AJAX e C#?

Purtroppo non ho il codice poiché non ho assolutamente idea di come iniziare.

+0

Quindi che stai cercando di fare? Carica un file sul server o stai tentando di inviare uno stato mentre ogni linea viene elaborata? O entrambi. Probabilmente dovresti semplicemente inviare il file usando un file select. Quindi restituire lo stato mentre viene elaborato, lo streaming del file e l'elaborazione allo stesso tempo sembra un po 'bizzarro ma può essere fatto. –

+0

inoltre, perché stai provando a fare questo? –

+3

In situazioni normali, il server non può "spingere" i dati sul client. Questa è una limitazione del protocollo HTTP. Il client può richiedere ripetutamente i dati e il server può rispondere con i dati quando è disponibile. Questo è chiamato polling. Se lo fai abbastanza spesso, può dare l'impressione che il server stia spingendo i dati al client. È possibile ottenere la spinta effettiva dei dati utilizzando tecnologie come [prese Web] (https://en.wikipedia.org/wiki/WebSocket), comunemente implementate in .NET con [SignalR] (http://signalr.net/) . – mason

risposta

-1

Quando il browser invia file, vengono compressi per risparmiare larghezza di banda e vengono calcolati alcuni checksum per garantire che i file arrivino "in sicurezza" a destinazione. Ciò significa che il server sarà in grado di elaborare la richiesta solo quando tutti i dati saranno stati trasmessi.

Ciò che è possibile fare, tuttavia, è inviare il contenuto del file come chunk (linea per linea o n-line per n-line) a un servizio web, consentendo al server di elaborarlo rapidamente e rispondere al gestore di ajax. A seconda della tua applicazione, come se il contenuto dei tuoi file fosse nel suo insieme), potresti dover creare una sorta di struttura di una sessione di trasmissione per mantenere sincronizzati la trasmissione del browser e la risposta del server (per assicurarti che non siano confusi)

+1

La compressione non ha nulla a che fare con il fatto che il server non sia in grado di inviare i dati. Questa limitazione proviene effettivamente dal protocollo HTTP stesso. – mason

+0

Infatti. Non ho detto che è la causa principale del problema, ma è una delle ragioni più comprensibili. –

+0

Menzionare la compressione qui non farà altro che confondere le cose. Non è la ragione "più comprensibile", solo una falsa pista. – mason

Problemi correlati