请求时出现HttpError 400https://www.googleapis.com/upload/drive/v2/files/。。。返回“上传请求无效”

2024-05-20 02:03:47 发布

您现在位置:Python中文网/ 问答频道 /正文

不确定这里的API下发生了什么,但是从我的调试输出来看,一切都很好。它将一个ID传递给一个有效的文件,以此类推。有没有办法在googlesdk中启用调试输出?在

在HTTP错误之前,我看到了几个警告:

WARNING:oauth2client.util:new_request() takes at most 1 positional argument (2 given)
WARNING:oauth2client.util:new_request() takes at most 1 positional argument (2 given)

代码如下:

^{pr2}$

好的,这个函数是通过一个文件类(本地或远程)调用的。在本例中,远程文件类调用此函数,提供对本地文件类上载程序(media_upload)的引用:

所以在远程文件类中,我实现了这个方法。Drive()类是我自己的Google API包装器:

def _updateFile(self, path, src):
    debug("Updating remote file: %s" % path)

    if GsyncOptions.dry_run: return

    drive = Drive()
    info = drive.update(path, src.getInfo(), src.getUploader())

    if info is None:
        debug("Update failed")

“src”变量是对另一个文件类(本地文件)的引用。它调用getUploader来传递对上载程序的引用。具体实施如下:

def getUploader(self, path = None):
    info = self.getInfo(path)
    if info is None:
        raise Exception("Could not obtain file information: %s" % path)

    path = self.getPath(path)

    f = open(path, "r")
    if f is None:
        raise Exception("Open failed: %s" % path)

    from apiclient.http import MediaIOBaseUpload

    return MediaIoBaseUpload(f, info.mimeType, resumable=True)

Tags: 文件pathselfinfosrcnoneapinew
2条回答

问题似乎是用于创建文档的insert()API方法需要为文档主体(或媒体主体)定义一个值。我最初创建的文档是空的,根本没有提供任何文档主体,基本上保留为None。这就产生了这样一个场景:我在驱动器上有一个无法更新的文档。通过创建具有空正文的文档,更新随后开始工作:

return self.service().files().insert(
    body = info.dict(),
    # An empty media_body.
    media_body = ""
).execute()

回答“有没有办法在googlesdk中启用调试输出?”{这是问题的一部分。在

相关问题 更多 >