Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google drive api 谷歌驱动器API附加文件?_Google Drive Api - Fatal编程技术网

Google drive api 谷歌驱动器API附加文件?

Google drive api 谷歌驱动器API附加文件?,google-drive-api,Google Drive Api,如何使用API将内容附加到Google Drive中的文件末尾 我真的需要下载整个文件,然后编辑本地副本,然后重新上传整个文件吗?是的,你真的需要下载、编辑文件并再次上传。无法以编程方式编辑文件。除了电子表格之外,您可能会使用Google sheets API,而不是Google drive API。您可以使用驱动器API可恢复上载,但有一些限制: (我不太记得它是不是真的)上传的最小字节数必须是262144,除了“创建”文件的最终上传,它可以包含更少的字节数 上传会话在一周后过期, 如果不

如何使用API将内容附加到Google Drive中的文件末尾


我真的需要下载整个文件,然后编辑本地副本,然后重新上传整个文件吗?

是的,你真的需要下载、编辑文件并再次上传。无法以编程方式编辑文件。除了电子表格之外,您可能会使用Google sheets API,而不是Google drive API。

您可以使用驱动器API可恢复上载,但有一些限制:

  • (我不太记得它是不是真的)
    上传的最小字节数必须是
    262144
    ,除了“创建”文件的最终上传,它可以包含更少的字节数

  • 上传会话在
    一周后过期
    , 如果不知道最终文件大小,可以将
    内容范围设置为
    */*

  • 文件将不会显示在用户界面的google drive中
    ,直到完成
    ,使用类似的标题上传到下面的示例,其中/*是文件的最终字节长度。它必须少一个字节,如下例所示:
    262146/262147

我建议为gcp项目获得一个服务帐户,您可以在您的个人驱动器中创建一个文件夹,并与服务帐户电子邮件共享

为了节省一些时间,因为驱动器api文档不是最好的,在“纯”python http请求中:

首先,您必须创建文件并获取会话url:

    headers = {"Authorization": "Bearer "+myAccesstoken,
               "Content-Type": "application/json"}

    file_metadata = {
        'name': "myFile.txt",
        'mimeType': "text/plain",
        'parents': [myFolderid],
        "uploadType": "resumable"
    }
    r = requests.post(
        "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable",
        headers=headers,
        data=json.dumps(file_metadata)

    )
    session_url=r.headers['Location']
然后,您可以将数据上载到它:

        headers = {
            "Authorization": "Bearer "+myAccesstoken,
            "Content-Range": 'bytes 0-262144/*'}

        if is_final_data:
            headers = {
                "Authorization": "Bearer "+myAccestoken,
                "Content-Range": 'bytes 262144-262146/262147'}

        sd = io.BytesIO()
        sd.write(bytes("Wurst", "ASCII"))
        sd.seek(0)
        r = requests.put(
            session_url,
            headers=headers,
            data=sd
        )
若要获取上次上载的字节位置,如果要恢复上载,请仅发送带有会话url和授权标头的空put请求,然后读取其响应标头

您可以将会话url存储在文件中,然后继续上载一周。 注意:由于访问令牌仅在有限的时间内有效,因此您将需要以下内容

if credentials.access_token_expired:
    credentials.refresh(httplib2.Http())

告诉我更多关于google sheets API的信息->如果我也想要->我可以制作一个1单元格宽度的CSV并附加它吗?(从而有效地添加新行)是的,你可以。这是一个旧的GDataAPI,这意味着访问它很痛苦。