2015-11-19 17 views
5

Mi permetta di spiegare cosa sto facendo e come sto facendo.Come caricare un file su OneDrive usando l'API REST di OneDrive?

Cosa sto facendo?

Sto cercando di caricare un file in Microsoft Onedrive utilizzando la sua API REST Fonte: one drive api documentation

Sto usando frammenti di Microsoft Onedrive approccio per fare in modo che il file può essere grande come 5 GB o piccolo come 1kb (dipende dall'utente)

Attualmente, lo faccio usando POST-MAN Chrome estensione chiamare Apies

Come sto andando?

  1. accesso generati gettone
  2. Creato sessione e ha ricevuto Caricamento url
  3. file di
  4. Caricamento con richiesta PUT come indicato di seguito

file selezionato che voglio caricare Dimensioni (File: 729676295 bytes enter image description here

Aggiunte intestazioni e inviate la richiesta e inviato la richiesta enter image description here Ecco il risultato enter image description here

è dire che la dimensione massima frammento è 67108864 byte così ho cambiato il valore di

lunghezza del contenuto: 67108864 e contenuti-range: bytes 0-67108863/729676295

ma poi ricevo questo messaggio di errore: dichiarata frammento lunghezza non corrisponde al numero previsto di byte enter image description here

Ti prego, aiutami a capire cosa devo passare content-length e contenuti-range.

Molte grazie per l'attenzione.

risposta

3

Infine, grazie a dio dopo 2 giorni di lotta ho trovato qual era il problema.

Ci sono alcuni punti che dovete tenere a mente

  1. Devi dividere un file in in parti uguali e salvarlo da qualche parte e caricare ciascuno di essi separatamente sullo stesso URL che si ottiene dopo la creazione una sessione.
  2. Lunghezza contenuto deve essere il numero totale di byte del file che si sta caricando in tutte le richieste di caricamento di frammenti.
  3. Content-Range sarà come: 0- {fragmentLength-1}/{} totalNumberOfBytesOfFile (lo stesso content-length) e dal prossimo frammento del Content-Range sarà {} uploadedBytes - {uploadedBytes + nextSetOfBytes-1}/{} totalNumberOfBytesOfFile

Nota: la prossima serie di byte dovrebbe essere lungo quanto era il precedente. Non preoccuparti perché l'ultimo frammento può essere diverso.

P.S: non utilizzare la gamma di contenuti che si riceverà dopo aver caricato correttamente il frammento.

2

enter image description here

{} totalNumberOfBytesOfFile non è stessa lunghezza del contenuto; Content-Length è byte del frammento corrente.

l'immagine è un esempio per caricare un file di 4917 byte.