2017-07-16 1 views
0

Je ne parviens pas à renommer les fichiers dans Google Drive dans une application NodeJs. J'utilise:Impossible de renommer les fichiers Google Drive avec la bibliothèque nodeJs

  • googleapi nodeJs bibliothèque v. 20.1.0.
  • noeud v. 8.1.4

L'application gère les demandes de fichiers fins, et il est en mesure de reproduire des fichiers. Cependant, lors de la mise à jour, le nouveau name n'est jamais appliqué.

J'obtiens en réponse la ressource de fichier, ce qui entraînerait the request was successful.

Je fais ceci:

const google = require('googleapis'); 
let googleService = google.drive('v3'); 

let params = { 
    auth: testedAndValidOAuth, 
    fileId: validFileId, 
    uploadType: 'multipart', 
    name: "some name 2" 
}; 

googleService.files.update(params, (err, response) => console.log(response)); 

Pour la propriété uploadType je l'ai essayé avec et sans elle, avec toutes les options disponibles: resumable, multipart et media. Lorsque vous essayez media je suis l'erreur suivante:

Error: The API returned an error: Error: Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/drive/v3/files/xxxfileIdxxx?uploadType=media&name=some+name+2 

J'ai essayé de modifier manuellement le lien dans la bibliothèque et l'erreur partais, mais malheureusement le nom n'a pas changé.

En regardant dans la bibliothèque, j'ai remarqué que le name PARAM est pas mentionné:

@param {object} params Parameters for request 
@param {string=} params.addParents A comma-separated list of parent IDs to add. 
@param {string} params.fileId The ID of the file. 
@param {boolean=} params.keepRevisionForever Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Drive. 
@param {string=} params.ocrLanguage A language hint for OCR processing during image import (ISO 639-1 code). 
@param {string=} params.removeParents A comma-separated list of parent IDs to remove. 
@param {boolean=} params.supportsTeamDrives Whether the requesting application supports Team Drives. 
@param {boolean=} params.useContentAsIndexableText Whether to use the uploaded content as indexable text. 
@param {object} params.resource Media resource metadata 
@param {object} params.media Media object 
@param {string} params.media.mimeType Media mime-type 
@param {string|object} params.media.body Media body contents 
@param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`. 
@param {callback} callback The callback that handles the response. 

Je me demande, je fais quelque chose de mal, est ce but, ce qui signifie que nous ne pouvons pas modifier les noms de fichiers, ou est-ce un bug dans la bibliothèque?

Répondre

0

Essayez de régler votre nouveau nom dans params.media.body, par exemple

params.resource = {name: "newname"} 

corrigé selon commentaire

+0

Presque! Il s'avère qu'il doit être défini via 'params.resource = {name:" newname "}'. Je dois ajouter que les docs sont assez obscurs à ce sujet ... Si vous pouvez mettre à jour la réponse, je l'accepterai :-) – ghego1

+0

docs d'accord sont horribles. Je pense que les bibliothèques sont générées automatiquement ou au moins génériques pour tous les services Google, donc la documentation et le comportement font souvent défaut – pinoyyid