2013-11-04 9 views
15

Sto tentando di caricare i miei file su Google Drive tramite l'API REST (caricamento ripristinabile). Tutto sembra a posto (XMLHttpRequest trigger onprogress e onload eventi), ma dopo di esso (onload attivato) la richiesta di Google Drive PUT non riesce con 500 Internal Server Error. Il file non viene visualizzato nella mia cartella di Google Drive. Errore 500 viene xhr.onload, non in xhr.onerror.Google Drive caricamento limite dimensioni file

Stessa cosa se sto cercando di caricare quel file tramite l'interfaccia di Google Drive. Succede a volte, e non ho un ambiente con il 100% di riproduzione.

Tipo di file Adobe DNG o Canon .CR2 e la dimensione del file ~ 28MB.

Cosa sto facendo male? È noto bug o limitazioni a file o file?

Possibili motivi: limitazioni di file, limitazioni del tipo di file o forse il mio token scade mentre il file viene caricato?

UPD: Sto usando this uploader così com'è, solo con modifiche estetiche.

+1

Dovrebbe essere abbastanza facile da eliminare 2 dei tuoi 3 possibilità. Una limitazione del tipo di file si innescherebbe per qualsiasi dimensione del file e mi aspetto uno stato 405. A meno che tu non abbia convert = true, a Drive non importa quale sia il tuo tipo di file. Se il tuo token scade, dovresti ottenere un 401. Quindi la mia ipotesi personale sarebbe che si tratta di un problema di bug/file. Questa pagina https://support.google.com/drive/answer/37603?hl=it indica che il limite per i file non convertiti è 10 GB. – pinoyyid

+0

Parametri di risposta del server: {"errore": {"errori": [{"dominio": "globale", "motivo": "internalError", "message": "InternalError"}], "codice": 500 , "message": "InternalError"}} –

+0

Suppongo che si tratti di un bug di Drive a meno che qualcuno di Google non confermi diversamente. Potresti voler provare la vecchia API dell'elenco di documenti che sembra più affidabile. – pinoyyid

risposta

4

OK. Capito.

Caricamento dei file con successo con Content-Type == "application/octet-stream". Sembra un bug sul lato GoogleDrive con i file di tipo mime. In questo scenario i miei file raw (DNG, CR2, NEF ecc.) Vengono archiviati in GoogleDrive con un tipo mime non corretto (di conseguenza non esiste un'anteprima per questi file).

Quindi non posso più filtrare i file per tipo mime.

Query string = (mimeType = 'image/x-adobe-dng' or mimeType = 'image/x-canon-cr2' or mimeType = 'image/x-nikon-nef'). 

ho cercato di filtrare i file per titolo parola chiave, ma sembra che i titoli non contiene l'estensione, ma in risposta titoli voce contengo estensione.

Quindi devo filtrare i miei file non per tipo mime o per titolo, ma per parola chiave fullText.

Query string = (fullText contains '.dng' or fullText contains '.cr2' or fullText contains '.nef'). 

Conclusione:

  1. Google Drive controlli uploader Content-Type, anche se l'opzione Convert è impostato su falsa.
  2. GoogleDrive non riesce di volta in volta con questa conversione .
  3. Uploader funziona correttamente con Content-Type == 'application/octet-stream'.
  4. GoogleDrive stringa di parole chiave titolo non contiene l'estensione file, ma nei titoli di risposta hanno estensione.
  5. GoogleDrive stringa di query parola chiave fullText contiene il nome file con estensione (mb non è molto veloce per i file di testo).
  6. Per testare la richiesta è possibile utilizzare questo strumento https://developers.google.com/drive/v2/reference/files/list alla fine della pagina.
  7. crash Google Drive API di volta in volta con stato HTTP 500 Internal Server Error:

{"error":{"errors":[{"domain":"global","reason":"backendError","message":"Backend Error"}],"code": 500,"message": "Backend Error"}}

+0

Il problema è specifico per i tipi che possono essere thumbnailed. File di dimensioni molto grandi possono causare il timeout del servizio, che genera l'errore 500. Non sono sicuro quando sarà corretto, ma sulla roadmap. –

+0

@SteveBazyl, se hai domande sull'annidamento dei formati di foto digitali in formato raw, posso fornire alcuni consigli per te o per il tuo team. –

+1

Non sono i formati il ​​problema, piuttosto un vincolo architettonico. C'è una soluzione pianificata. –

2

Penso che questo sarebbe correlato ai file di foto grezzi, perché DRIVE tenta di convert them to JPG come è fatto in Google+, a meno che non si specifica convert = false. Devi specificare nell'API di caricamento per non convertire quei file.

Questo secondo post dice che ti consentirà di visualizzare l'anteprima del file up to 25MB, questa limitazione di dimensioni potrebbe essere correlata con i tuoi problemi. Forse potresti provare a caricare un'altra foto con meno di quella dimensione per assicurarti che non sia questa la limitazione.

+0

Informazioni sulla conversione - No. Uso il caricamento ripristinabile e converto impostato su falso. Più di quello stato 500 accade di volta in volta. Informazioni su file - No. A volte i file di grandi dimensioni vengono caricati correttamente, a volte no. Solo una cosa è chiara - succede su file di grandi dimensioni. I file piccoli vengono sempre caricati correttamente. –

+0

suona come se si potesse avere una connessione internet spotty, il che sarebbe molto difficile da definire nei registri e negli errori. prova la stessa configurazione al lavoro, Starbucks, ecc. e verifica se la tua media di battuta migliora. – dandavis

0

Ho anche visto questo errore 500 con Google Analytics un paio di volte ed è normale a causa del fatto che il server è occupato. Se aspetto un po 'e riprovo, funziona. Prova a leggere questo https://developers.google.com/drive/handle-errors#implementing_exponential_backoff Questo ha funzionato con me con Google Analtyics API, normalmente dal momento in cui arriva al passaggio 6 è stato ottenuto di nuovo accesso. Non ho provato con google Drive, ma poi non ho provato a caricare un file 25m prima. Ma scommetto che questo è il tuo problema.

+0

Anche se è corretto, è solo una piccola parte della storia.I vari backend di Google generano molti 500 diversi, alcuni dei quali riescono a riprovare, molti dei quali no. Quindi fare l'expo-backoff a volte è la cosa giusta da fare, ma a volte si arresta indefinitamente fino a quando non si arrende e si informa l'utente. – pinoyyid

+0

Nel mio caso è normale con utenti con grandi quantità di dati in google analytics che interrompono sette mesi alla volta. L'aggiunta di filtri e l'aggiunta di filtri richiedono un po 'di tempo prima che il server li elabori. L'aggiunta di alcuni tentativi risolve il problema. Questo e impostare il sistema in loop mese per mese se ci sono molti dati. – DaImTo