如何使用 Google Drive Node.js 断点续传

2023-12-10

嘿,由于 google 云端硬盘正在更改其库,我无法使用基本上传功能上传大于 5MB 的文件创建驱动器文件。文档告诉我,我必须选择可恢复上传。但谷歌驱动器没有提供任何示例代码,而且我在谷歌上找不到任何内容。

也许重要的是要知道我可以使用以下命令上传小于 5MB 的文件创建驱动器文件

所以auth是没有问题的。

https://developers.google.com/drive/v3/web/resumable-upload

我写了这个 POST 请求(也不适用于 PUT):

 var fs = require('fs')
 var request = require('request')
 var file = 'C:\\test\\sample.container'
 var uploadUrl = 'https://www.googleapis.com/drive/v3/files?uploadType=resumable'


 var stats = fs.statSync(file)
 var fileSizeInBytes = stats["size"]


  fs.readFile(file, function read(e, f) {
             if (e) {
             console.log(e)
             return;
             } 




                 request.post({
                     url: uploadUrl,
                     headers: {
                         'Authorization': 'xxxxxxxxxxxxxxxxxxxxxxx',
                         'Content-Length': fileSizeInBytes,
                         'Content-Type': 'application/octet-stream'
                     },
                     body: f,
                 }, function(e, r, b) {
                     if (e) {
                      console.log(e)
                      return;
                     }

                       console.log(`
                         Response: ${ JSON.stringify(r) }
                         Body: ${ b }
                         `)

                 }); 


 }); 

但我得到的结果是:

<HTML>
<HEAD>
<TITLE>Request Entity Too Large</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Request Entity Too Large</H1>
<H2>Error 413</H2>
</BODY>
</HTML>

如果我使用请求 url 代替:https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable

我也收到了与正文结果类似的消息:请求太大。

那么有人有一个可以使用可恢复上传或基本上传来上传文件的工作代码吗?或者还有其他上传大文件的方法吗?我愿意接受替代方案!谢谢


在其他 api 客户端(例如 Python 客户端)中,可断点续传上传是通过更改MediaFileUpload带参数的构造函数resumable=True. The node.jsapi客户端仅在alpha,因此它可能没有内置对可恢复上传的支持。你可以试试喂食驱动a stream,或者简单地扩展该示例media参数,例如

media: {
  mimeType: 'some mimetype',
  body: 'some body',
  resumable: true
}

如果流和上面resumable不起作用,那么你将无法使用node.js客户端库进行断点续传,而必须直接使用REST API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Google Drive Node.js 断点续传 的相关文章

随机推荐

  • PHP:使用循环获取数组的下一个/上一个元素(如果最后一个/第一个)[重复]

    这个问题在这里已经有答案了 我无法向我的投资组合添加导航箭头 我想根据当前 id 获取下一个和上一个 id 问题是当 current id是数组的最后一个 我不知道如何转到第一个数组来创建一种循环 同样如果 current id是第一个元素
  • 删除枚举标志

    老实说 我对删除枚举标志感到有点困惑 让我举个例子 假设我们有一个如下所示的枚举 Flags enum Letter A 1 1 B 2 10 C 4 100 现在如果我想让一个变量保存标志Letter AB我可以foo Letter A
  • 列表与列表迭代器

    我有一个清单 List myList new ArrayList 要从此列表中获取信息 有两种方法 1 for Object obj myList some code 2 Iterator objIt myList iterator whi
  • GCM 错误服务不可用

    我在注册时遇到问题 GCM 服务器 我的日志中显示一条消息 服务不可用 我尝试了几种选择 但没有得到好的结果 已经启用google play service的依赖 已经检查时钟时间 巴西利亚设置的时区 已经检查了我所知道的一切 下面是我的代
  • 如何从 python 端指定散景图的第 n 个股票代码,其中 n 是股票代码数量

    维护者的注意事项 对 Coffeescript 的支持已弃用 并将在 Bokeh 2 0 中删除 除非我弄错了 否则你只需要访问nth作为实例变量 通过放置this 在它前面 编辑 您还需要使用 粗箭头 gt 在你的过滤器中 这样this已
  • 一次循环5条记录并将其分配给变量

    我有一个包含 811 条记录的表 我想要得到一次五个记录并将其分配给变量 下次当我运行foreach循环任务进入SSIS 它将循环另外五个记录并覆盖变量 我尝试过使用光标进行操作 但找不到解决方案 任何帮助将不胜感激 我有这样的桌子 例如
  • 改造2:如何处理动态响应

    我正在尝试从此 api 获取数据 http www omdbapi com 我正在使用 Retrofit 2 并为第一个 json 创建了一个 pojo 我很好奇的是 当数据不可用时 如何将我的 pojo 转换为第二个 pojo 当有可用数
  • Azure AD 身份验证错误:用户取消了流程

    我正在尝试使用开发我们的应用程序的用户身份验证功能Azure AD并在此过程中遇到一些问题 我已经实施了client flow身份验证使用ADAL库 但当我尝试登录时出现以下错误 Error User cancelled the flow
  • 如何使图像不透明到一定程度?

    我想知道如果在图像视图中设置或设置为相对布局的背景 是否可以使图像不透明 如何使用图像视图或相对布局动态设置图像使图像不透明 或者是否有其他选项可以动态设置图像及其不透明度 我还希望同一图像可以在两个方向上旋转 并且还可以放大和缩小到任何级
  • Python urllib2 无法在备用端口(不是 80)上打开 localhost?错误10013

    这是我的服务器 py import BaseHTTPServer import SocketServer class TestRequestHandler BaseHTTPServer BaseHTTPRequestHandler def
  • FabricJS:垂直对齐文本中心

    我使用的是fabricjs 1 5 并且我一直坚持垂直对齐行中间的文本 我正在使用此代码来设置行高 text setProperty lineHeight scope lineHeight current 它更改画布上文本的行高 但文本始终
  • C++ 中的多语句宏

    In C 是否有可能制作一个多语句宏 with 嵌套 if 语句里面像下面这样吗 我已经尝试了一段时间了 但我遇到了第二个 if 语句无法看到 的范围问题symbol 也许我需要进一步了解宏 define MATCH SYMBOL symb
  • Cassandra 存储桶拆分以调整分区大小

    我对 Cassandra 很陌生 我刚刚通过 Datastax 课程学习了它 但我在此处或互联网上没有找到足够的有关存储桶的信息 并且在我的应用程序中我需要使用存储桶来拆分数据 我有一些工具可以进行很多测量 并且每天拆分测量 时间戳作为分区
  • 点击“显示更多”按钮后如何发布新内容?

    我一直在尝试在用户点击后加载一些附加内容的区域中添加 VO 支持Show more按钮 请参阅随附的屏幕截图 所需行为 我需要 VO 宣布有关附加加载元素的信息 例如 什么是 cookie 以及另外 11 个项目 Tried 方法一 使用
  • 新 Gmail API 中的 RFC822 Message-Id

    我们尝试在使用 gmail api 发送电子邮件时手动设置 RFC822 Message Id 我们已经进行了测试 但发现 Gmail 超越了我们的价值 您知道这是否有原因吗 我们可以为此做点什么吗 是的 邮件发送的 Message Id
  • 尽管图像是正确的白色,但图像并未显示完全白色

    对于闪屏 我使用包含白色背景的图像 纯白色 在 Photoshop 中检查 由于某种原因 它显示了轻微的绿色背景与活动的默认白色背景相比 如屏幕截图中标记的那样 仅在某些设备中 例如 我将其作为框架布局中的单个视图添加到活动中
  • 哪个 zip 库可以与 Ruby 1.9.2 配合良好?

    我之前在 Ruby 1 8 7 中使用过 ruby zip gem 但我听说 ruby zip 不能很好地与 ruby 1 9 2 配合使用 哪些 zip 库适用于 Ruby 1 9 2 你是否真正尝试过使用rubyzip与1 9 2 似乎
  • 将箭头函数与 jQuery 回调一起使用时,“this”关键字的行为有所不同[重复]

    这个问题在这里已经有答案了 我有一个包含多行的表 每行上都有一个edit and delete button 简而言之 当使用 class 触发编辑按钮时 edit 弹出一个表单 除了类名之外 我还添加了一个独特的id like id ed
  • 通过无服务器框架部署到 AWS Lambda 时,将文件打包到应用程序包的特定文件夹中

    Context 我正在使用aws node typescript的例子无服务器框架 我的目标是整合Prisma进去 到目前为止 我有 使用本地创建项目serverless create 在 Railway 上设置 PostgreSQL 数据
  • 如何使用 Google Drive Node.js 断点续传

    嘿 由于 google 云端硬盘正在更改其库 我无法使用基本上传功能上传大于 5MB 的文件创建驱动器文件 文档告诉我 我必须选择可恢复上传 但谷歌驱动器没有提供任何示例代码 而且我在谷歌上找不到任何内容 也许重要的是要知道我可以使用以下命