Skip to content

Commit c5d4f64

Browse files
correzione articolo e scripts
1 parent d5e1d8d commit c5d4f64

File tree

4 files changed

+27
-27
lines changed

4 files changed

+27
-27
lines changed

5-network/09-resume-upload/article.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,49 @@
22

33
Con il metodo `fetch` è abbastanza semplice eseguire l'upload di un file.
44

5-
Come ripristinare l'upload di un file dopo avere perso la connessione? Non esistono opzioni built-in per questa operazione, ma abbiamo dei pezzi di codice per implementarla.
5+
Come possiamo ripristinare l'upload di un file dopo avere perso la connessione? Non esistono opzioni built-in per questa operazione, ma abbiamo dei pezzi di codice per implementarlo.
66

7-
Il ripristino degli upload dovrebbero andare a braccetto con la possibilità di tenerne traccia durante il trasferimento, come ci aspetteremmo per files di grosse dimensioni (se abbiamo bisogno di ripristinare l'operazione). Dal momento che `fetch` non permette di tenere traccia dell'upload, allora dovremmo rifarci all'uso di [XMLHttpRequest](info:xmlhttprequest).
7+
Il ripristino degli upload dovrebbero andare a braccetto con la possibilità di tenerne traccia durante il trasferimento, come ci aspetteremmo per files di grosse dimensioni (se abbiamo bisogno di ripristinare l'operazione). Dal momento che `fetch` non permette di tenere traccia dell'upload, allora dobbiamo rifarci all'uso di [XMLHttpRequest](info:xmlhttprequest).
88

99
## Evento di progresso non-così-utile
1010

11-
Per ripristinare un upload, dobbiamo conoscere quanto è stato trasferito prima che la connessione si fosse interrotta.
11+
Per ripristinare un upload, dobbiamo conoscere la quantità di dato trasferito prima che la connessione si interrompesse.
1212

13-
C'è `xhr.upload.onprogress` per tenere traccia del progresso di upload.
13+
Per tenere traccia del progresso di upload possiamo usare `xhr.upload.onprogress`.
1414

15-
Sfortunatamene, non ci aiuta nel ripristinare l'upload, dal momento che qeusto viene scatenato quando il dato è stato *inviato*, ma è stato ricevuto dal server? Il browser non lo sa.
15+
Sfortunatamente, quest non ci aiuta nel ripristinare l'upload, dal momento che questo evento viene scatenato solamente quando il dato è stato *inviato*. Ma è stato ricevuto dal server? Il browser non lo sa.
1616

17-
Magari è stato bufferizzato da qualche proxy di rete locale, o magari il processo del server remoto è stato terminato e non può più processarlo, oppure è stato perso nel bel mezzo del trasferiemnto e non raggiunge il ricevente.
17+
Magari potrebbe essere stato bufferizzato da qualche proxy di rete locale, o magari il processo del server remoto è stato terminato e non è più in grado di processarlo, oppure è stato perso nel bel mezzo del trasferimento e non raggiunge il ricevente.
1818

19-
Questo è il motivo per il quale è utile solo a mostrare una carinissaima barra di caricamento.
19+
Questo è il motivo per il quale la sua utilità si limita a mostrare una carinissima barra di caricamento.
2020

21-
Per riprisitnare l'upload, abbiamo bisogno di conoscere *esattamente* il numero di bytes ricevuti dal server. e solo il server può dircelo, quindi creeremo una richiesta aggiuntiva.
21+
Per ripristinare l'upload, abbiamo bisogno di conoscere *esattamente* il numero di bytes ricevuti dal server. E questa informazione può darcela solamente il server, motivo per il quale andiamo a creare una richiesta aggiuntiva.
2222

2323
## Algoritmo
2424

25-
1. Per prima cosa, creiamo un id del file, per identificare univocamente il file che stiamo andando a trasferire:
25+
1. Per prima cosa, creiamo un id del file, per identificare univocamente ciò che stiamo andando a trasferire:
2626
```js
2727
let fileId = file.name + '-' + file.size + '-' + file.lastModified;
2828
```
2929
Ciò è necessario per ripristinare l'upload, per dire al server cosa stiamo ripristinando.
3030
31-
Se il nome, la dimensione oppure la data di ultima modifica sono differenti, allora ci sarà un altro `fileId`.
31+
Se il nome, la dimensione, oppure la data di ultima modifica sono differenti, allora ci sarà un `fileId` differente.
3232
33-
2. Inviamo una richiesta al server, chiedendo quanti bytes possiede già:
33+
2. Inviamo una richiesta al server, chiedendo quanti bytes possiede già di quel file:
3434
```js
3535
let response = await fetch('status', {
3636
headers: {
3737
'X-File-Id': fileId
3838
}
3939
});
4040
41-
// Il serve possiede questo numero di bytes
41+
// Il server possiede questo numero di bytes
4242
let startByte = +await response.text();
4343
```
4444
45-
Questo presume che il server tiene traccia degli upload dei files tramite l'header `X-File-Id`. Dovrebbe essere implmentato lato server.
45+
Questo presume che il server tenga traccia degli upload dei files tramite l'header `X-File-Id`. Dovrebbe essere implementato lato server.
4646

47-
Se il file non essite ancora nel server, allora la risposta del server dovrebbe essere `0`
47+
Se il file non esiste ancora nel server, il valore della risposta dovrebbe essere `0`
4848

4949
3. Quindi, possiamo usare il metodo `slice` di `Blob` per inviare il file partendo da `startByte`:
5050
```js
@@ -53,20 +53,20 @@ Per riprisitnare l'upload, abbiamo bisogno di conoscere *esattamente* il numero
5353
// File id, in modo tale che il server possa sapere di quale file stiamo eseguendo l'upload
5454
xhr.setRequestHeader('X-File-Id', fileId);
5555
56-
// Il byte a partire dal quale stiamo eseguendo il ripristino, in moda da consentire al server di sapre da che punto stiamo cominciando a ripristinare
56+
// Il byte a partire dal quale stiamo eseguendo il ripristino, in modo da consentire al server di sapere da che punto stiamo cominciando a ripristinare
5757
xhr.setRequestHeader('X-Start-Byte', startByte);
5858
5959
xhr.upload.onprogress = (e) => {
6060
console.log(`Uploaded ${startByte + e.loaded} of ${startByte + e.total}`);
6161
};
6262
63-
// il file può provenire da input.files[0] o altra fonte
63+
// il file puo' provenire da input.files[0] o da altra fonte
6464
xhr.send(file.slice(startByte));
6565
```
6666

67-
Qui inviamo al server sia il file id come `X-File-Id`, di modo che sappia quae file stiamo trasferendo, e da quale byte staimo ripartendo tramite `X-Start-Byte`, cosicché sappia che non stiamo partendo dall'inizio, ma che staimo, invece, ripristinando.
67+
Qui inviamo al server sia il file id come `X-File-Id`, di modo che sappia quale file stiamo trasferendo, e da quale byte stiamo ripartendo tramite `X-Start-Byte`, cosicché sappia che non stiamo partendo dall'inizio, ma che, invece, stiamo ripristinando.
6868
69-
Il sefver dovrebbe controllare i suoi registri, e nel caso in cui trovasse un upload di quest file, e la dimensione attualemnte caricata fosse esattaemnte di `X-Start-Byte`, allora accoderebbe i dati a qeusto file.
69+
Il server dovrebbe controllare i suoi registri, e nel caso in cui trovasse un upload del file, e la dimensione attualmente caricata fosse esattamente di `X-Start-Byte`, accoderebbe i dati al file.
7070
7171
7272
Ecco una demo con il codice client e la relativa parte server, scritta in Node.js.
@@ -77,6 +77,6 @@ Funziona parzialmente su questo sito, dal momento che Node.js sta su un altro se
7777

7878
[codetabs src="upload-resume" height=200]
7979

80-
Come possiamo vedere, i moderni metodi di rete sono molto vicini dall'essere dei gestori di files nelle loro capacità, controllo degli headers, indicazione del progresso di upload, invio di frammenti di files etc.
80+
Come possiamo vedere, i moderni metodi di rete sono molto vicini all'essere dei gestori di files nelle loro capacità, controllo degli headers, indicazione del progresso di upload, invio di frammenti di files etc.
8181
82-
Possiamo implementare upload ripristinabili e molto altro ancora.
82+
Possiamo implementare, quindi, upload ripristinabili e molto altro ancora.

5-network/09-resume-upload/upload-resume.view/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
<input type="submit" name="submit" value="Upload (Ripristina automaticamente)">
88
</form>
99

10-
<button onclick="uploader.stop()">Stop upload</button>
10+
<button onclick="uploader.stop()">Interrompi upload</button>
1111

1212

13-
<div id="log">Progress indication</div>
13+
<div id="log">Indicatore del progresso di upload</div>
1414

1515
<script>
1616
function log(html) {

5-network/09-resume-upload/upload-resume.view/server.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function onUpload(req, res) {
1919

2020
// non salveremo "da nessuna parte"
2121
let filePath = '/dev/null';
22-
// invece sarebbe possibile usare un percorso reale, ad esempio
22+
// invece potremmo usare un percorso reale, ad esempio
2323
// let filePath = path.join('/tmp', fileId);
2424

2525
debug("onUpload fileId: ", fileId);
@@ -40,7 +40,7 @@ function onUpload(req, res) {
4040
});
4141
debug("New file created: " + filePath);
4242
} else {
43-
// possiamo controllare su disco la dimension del file per sicurezza
43+
// possiamo controllare su disco la dimensione del file per sicurezza
4444
if (upload.bytesReceived != startByte) {
4545
res.writeHead(400, "Wrong start byte");
4646
res.end(upload.bytesReceived);
@@ -62,7 +62,7 @@ function onUpload(req, res) {
6262
// invia il corpo della richiesta al file
6363
req.pipe(fileStream);
6464

65-
// quando la richiesta è completata, e tutti i dati sono stati scritti
65+
// quando la richiesta è stata completata, e tutti i dati sono stati scritti
6666
fileStream.on('close', function() {
6767
if (upload.bytesReceived == req.headers['x-file-size']) {
6868
debug("Upload finished");

5-network/09-resume-upload/upload-resume.view/uploader.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class Uploader {
55
this.onProgress = onProgress;
66

77
// crea un fileId che identifica univocamente il file
8-
// potremmo usare l'identificatore di sessione dell'utente (avendone uno) per essere sicuri che sia ancora più unico
8+
// potremmo usare l'identificatore di sessione dell'utente (avendone uno) per essere ancora piu' sicuri della sua univocita'
99
this.fileId = file.name + '-' + file.size + '-' + file.lastModified;
1010
}
1111

@@ -31,7 +31,7 @@ class Uploader {
3131
let xhr = this.xhr = new XMLHttpRequest();
3232
xhr.open("POST", "upload", true);
3333

34-
// invia il file id, in modo da consentire al serve di conoscere quale file ripristinarea
34+
// invia il file id, in modo da consentire al server di conoscere quale file ripristinare
3535
xhr.setRequestHeader('X-File-Id', this.fileId);
3636
// invia la posizione del byte dal quale stiamo partendo per il ripristino, in modo da informare il server da dove stiamo ripartendo
3737
xhr.setRequestHeader('X-Start-Byte', this.startByte);

0 commit comments

Comments
 (0)