Skip to main content

put(file, options)

put() envoie un fichier et renvoie le nouvel objet.

Entrées

L’extension de l’objet provient de filename, puis du nom de base du chemin ou du nom du File. Les octets et un Blob simple n’ont pas de nom : passez donc filename (par exemple "data.json") lorsque vous les envoyez.
Dans Node.js, un chemin qui ne peut pas être ouvert lève une Error simple (Cannot open file: <path>, avec l’erreur d’origine dans cause). Dans un navigateur, passer un chemin échoue plus tôt, avec l’erreur de l’import de node:fs. Utilisez plutôt un File issu d’un <input type="file">.

Options

Voir Object Post pour l’ensemble des règles côté serveur.

Résultat

Envois simples et multipart

put() choisit le mode d’envoi en fonction de la taille du fichier : Chaque fichier doit faire au moins 512 octets ; les fichiers plus petits échouent avec FILE_TOO_SMALL. Le max_size d’une règle ou d’un jeton d’envoi, ou votre quota de stockage, peut abaisser le plafond de 10 GiB.

Déroulement d’un envoi multipart

  1. Le SDK démarre l’envoi, et le serveur répond avec ses limites de parties (max_size, max_parts).
  2. Le fichier est découpé en parties de min(max_size, max(16 MiB, ceil(size / max_parts))) octets. Une partie fait généralement 16 MiB ou plus, mais elle est plus petite lorsque le max_size du serveur est plus petit.
  3. Les parties sont envoyées 6 à la fois, la limite du serveur pour les parties en cours. Une partie échouée fait l’objet de nouvelles tentatives dans la limite de maxRetries.
  4. Lorsque toutes les parties sont arrivées, le SDK finalise l’envoi.
Si une partie échoue définitivement, ou si la finalisation échoue, le SDK attend les parties encore en cours puis annule l’envoi, de sorte qu’aucune partie n’arrive après l’annulation. L’erreur d’origine est levée. Il n’y a pas de reprise : appelez à nouveau put().
Un envoi multipart ne vérifie ni overwrite: false ni checksum_sha256. Il remplace toujours un objet existant portant le même nom.
Un compte peut avoir au maximum 32 envois multipart ouverts (partagés avec la passerelle S3) ; un de plus échoue avec TOO_MANY_OPEN_UPLOADS. Comme les parties partent 6 à la fois par compte, effectuez un seul gros envoi à la fois.

Envoyer depuis le navigateur

N’envoyez jamais la clé API à un navigateur. À la place, votre serveur génère un jeton d’envoi de courte durée et le navigateur envoie avec celui-ci.
Un client créé avec un jeton ne peut appeler que put(), envois multipart compris. Toute autre méthode échoue avec 403 UPLOAD_TOKEN_NOT_ALLOWED.

uploadTokens.create(options)

Le jeton fige toutes les options avec lesquelles il a été généré. Elle renvoie { token, expires_at, max_uses }. Voir Jetons d’envoi pour les règles côté serveur.
uploadTokens.create() est une écriture et a droit à une seule tentative : elle n’est jamais réessayée.