15 votes

Limite de taille de fichier pour le téléchargement sur Google Drive

Je tente de téléverser mes fichiers sur Google Drive via l'API REST (téléversement reprise). Tout semble bon (XMLHttpRequest déclenche les événements onprogress et onload), mais après cela (onload déclenché) la requête PUT vers Google Drive échoue avec une erreur 500 Internal Server Error. Le fichier n'apparaît pas dans mon dossier Google Drive. L'erreur 500 survient dans xhr.onload, pas dans xhr.onerror.

Même chose si j'essaie de téléverser ce fichier via l'interface Google Drive. Cela arrive parfois, et je n'ai pas un environnement avec une reproduction à 100%.

Type de fichier Adobe .DNG ou Canon .CR2 et taille de fichier ~28MB.

Qu'est-ce que je fais de mal ? Est-ce un bug connu ou des limitations par rapport aux types de fichiers ou aux fichiers eux-mêmes ?

Raisons possibles : limitations de taille de fichier, limitations de type de fichier, ou peut-être que mon jeton expire pendant que mon fichier est en cours de téléversement ?

MISE À JOUR : J'utilise cet outil de téléversement tel quel, seulement avec des modifications cosmétiques.

4voto

Vlad Tsepelev Points 872

D'accord. Je l'ai.

Les fichiers sont téléchargés avec succès avec Content-Type == "application/octet-stream". On dirait un bug du côté de GoogleDrive avec les fichiers mime-types. Dans ce scénario, mes fichiers bruts (DNG, CR2, NEF, etc.) sont stockés dans GoogleDrive avec un type mime incorrect (par conséquent, il n'y a pas de prévisualisation pour ces fichiers).

Je ne peux donc plus filtrer les fichiers par type mime.

Chaîne de requête = (mimeType = 'image/x-adobe-dng' or mimeType = 'image/x-canon-cr2' or mimeType = 'image/x-nikon-nef').

J'ai essayé de filtrer les fichiers par mot-clé titre, mais il semble que les titres ne contiennent pas d'extension, mais dans les titres des éléments de réponse contiennent une extension.

Chaîne de requête = (title contains '.dng' or title contains '.cr2' or title contains '.nef').

Je dois donc filtrer mes fichiers non pas par type mime ou par titre, mais par mot-clé fullText.

Chaîne de requête = (fullText contains '.dng' or fullText contains '.cr2' or fullText contains '.nef').

Conclusion:

  1. L'uploader GoogleDrive vérifie le Content-Type, même si l'option de conversion est définie sur false.
  2. GoogleDrive échoue de temps en temps avec cette conversion.
  3. L'uploader fonctionne bien avec Content-Type == 'application/octet-stream'.
  4. Le mot-clé de la chaîne de requête de GoogleDrive le titre ne contient pas d'extension de fichier, mais dans les titres de réponse, il y a une extension.
  5. Le mot-clé de la chaîne de requête de GoogleDrive fullText contient le nom de fichier avec extension (peut-être pas très rapide pour les fichiers texte).
  6. Pour tester votre requête, vous pouvez utiliser cet outil https://developers.google.com/drive/v2/reference/files/list à la fin de la page.
  7. L'API GoogleDrive plante de temps en temps avec un statut HTTP 500 Internal Server Error:

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

2voto

jmva Points 443

Je pense que cela serait lié aux fichiers photo bruts, car DRIVE essaie de les convertir en JPG comme c'est le cas dans Google+, à moins que vous ne spécifiez convert=false. Vous devriez spécifier dans votre API d'envoi de ne pas convertir ces fichiers.

Ce deuxième message dit qu'il vous permettra de prévisualiser le fichier jusqu'à 25 Mo, cette limite de taille pourrait être liée à vos problèmes. Peut-être pourriez-vous essayer d'envoyer une autre photo de moins de cette taille pour vous assurer que ce n'est pas là la limitation.

0voto

DaImTo Points 3712

J'ai également vu cette erreur 500 avec Google Analytics quelques fois et c'est normalement dû au fait que le serveur est occupé. Si j'attends un peu et réessaie, cela fonctionne. Essayez de lire ceci https://developers.google.com/drive/handle-errors#implementing_exponential_backoff Cela a fonctionné pour moi avec l'API Google Analtyics, normalement au moment d'arriver à l'étape 6, il a de nouveau accès. Je n'ai pas essayé avec Google Drive, mais je n'ai pas essayé de télécharger un fichier de 25m auparavant. Mais je parie que c'est votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X