在 HTTP 意义上,将新媒体放入云端硬盘文件中:
-
如果该文件已经存在,我们将替换其内容。
-
如果该文件尚不存在,我们将创建一个新文件。
这是 drive_upload()
和 drive_update()
的便捷包装。在pseudo-code中:
target_filepath <- <determined from `path`, `name`, and `media`>
hits <- <get all Drive files at target_filepath>
if (no hits) {
drive_upload(media, path, name, type, ...)
} else if (exactly 1 hit) {
drive_update(hit, media, ...)
} else {
ERROR
}
参数
- media
-
字符,要上传的本地文件的路径。
- path
-
指定 Google 云端硬盘上新文件的目标位置。可以是实际路径(字符)、标有
as_id()
的文件 ID 或dribble
。如果
path
是文件夹的快捷方式,它会自动解析为其目标文件夹。如果
path
作为路径给出(而不是dribble
或 id),最好通过包含尾部斜杠来明确指示它是否是文件夹,因为它不能总是从文件夹的上下文中计算出来。称呼。默认情况下,该文件创建在当前用户的"My Drive"根文件夹中。 - name
-
字符,如果未指定为
path
的一部分,则为新文件名。这将强制path
被解释为文件夹,即使它是字符并且缺少尾部斜杠。默认为文件的本地名称。 - ...
-
要传递到 Drive API 的命名参数。具有dynamic dots 语义。您可以通过
...
指定文件资源的属性来影响目标文件的元数据。阅读关联端点的 Drive API 文档的"Request body" 部分,了解相关参数。 - type
-
特点。如果是
type = NULL
,则如果可能,将根据文件扩展名自动确定 MIME 类型。如果源文件的类型合适,您可以通过将type
分别设置为document
、spreadsheet
或presentation
来请求转换为 Google 文档、表格或幻灯片。type
的所有非NULL
值均使用drive_mime_type()
进行预处理。 - verbose
-
这种对各个 googledrive 函数的逻辑论证已被弃用。要全局禁止 googledrive 消息传递,请使用
options(googledrive_quiet = TRUE)
(默认行为是发出信息性消息)。要以更有限的方式抑制消息传递,请使用帮助程序local_drive_quiet()
或者with_drive_quiet()
.
值
dribble
类的对象,每个文件一行的 tibble。
例子
# create a local file to work with
local_file <- tempfile("drive_put_", fileext = ".txt")
writeLines(c("beginning", "middle"), local_file)
# PUT to a novel filepath --> drive_put() delegates to drive_upload()
file <- drive_put(local_file)
#> ℹ No pre-existing Drive file at this path. Calling `drive_upload()`.
#> Local file:
#> • /tmp/RtmptmwySB/drive_put_15bb6f50e94c.txt
#> Uploaded into Drive file:
#> • drive_put_15bb6f50e94c.txt <id: 1VJPmHqxjedc-rJL6xFgFySJngtRAdkgx>
#> With MIME type:
#> • text/plain
# update the local file
cat("end", file = local_file, sep = "\n", append = TRUE)
# PUT again --> drive_put() delegates to drive_update()
file <- drive_put(local_file)
#> ℹ A Drive file already exists at this path. Calling `drive_update()`.
#> File updated:
#> • drive_put_15bb6f50e94c.txt <id: 1VJPmHqxjedc-rJL6xFgFySJngtRAdkgx>
# create a second file at this filepath
file2 <- drive_create(basename(local_file))
#> Created Drive file:
#> • drive_put_15bb6f50e94c.txt <id: 1XEBIqd5OMSm4iheChvPhBYBAioW3KUWo>
#> With MIME type:
#> • text/plain
# PUT again --> ERROR
drive_put(local_file)
#> Error in drive_put(local_file): Multiple items already exist on Drive at the target filepath.
#> Unclear what `drive_put()` should do. Exiting.
#> • drive_put_15bb6f50e94c.txt <id: 1XEBIqd5OMSm4iheChvPhBYBAioW3KUWo>
#> • drive_put_15bb6f50e94c.txt <id: 1VJPmHqxjedc-rJL6xFgFySJngtRAdkgx>
# Clean up
drive_find("drive_put_.+[.]txt") %>% drive_rm()
#> Files deleted:
#> • drive_put_15bb6f50e94c.txt <id: 1XEBIqd5OMSm4iheChvPhBYBAioW3KUWo>
#> • drive_put_15bb6f50e94c.txt <id: 1VJPmHqxjedc-rJL6xFgFySJngtRAdkgx>
unlink(local_file)
相关用法
- R googledrive drive_publish 发布原生 Google 文件
- R googledrive drive_cp 复制云端硬盘文件
- R googledrive drive_mime_type 查找 MIME 类型
- R googledrive drive_reveal 添加新的云端硬盘文件信息列
- R googledrive drive_rm 从云端硬盘删除文件
- R googledrive drive_id 驱动器 ID 类
- R googledrive drive_auth_configure 编辑和查看身份验证配置
- R googledrive drive_upload 上传到新的云端硬盘文件
- R googledrive drive_mv 移动云端硬盘文件
- R googledrive drive_has_token 手上有令牌吗?
- R googledrive drive_user 获取当前用户的信息
- R googledrive drive_rename 重命名云端硬盘文件
- R googledrive drive_trash 将云端硬盘文件移入或移出回收站
- R googledrive drive_share 共享云端硬盘文件
- R googledrive drive_about 获取有关云端硬盘函数的信息
- R googledrive drive_update 更新现有云端硬盘文件
- R googledrive drive_mkdir 创建云端硬盘文件夹
- R googledrive drive_fields 请求部分资源
- R googledrive drive_endpoints 列出驱动器端点
- R googledrive drive_deauth 暂停授权
- R googledrive drive_link 检索云端硬盘文件链接
- R googledrive drive_find 在 Google 云端硬盘上查找文件
- R googledrive drive_create 创建一个新的空白云端硬盘文件
- R googledrive drive_examples 示例文件
- R googledrive drive_browse 在浏览器中访问云端硬盘文件
注:本文由纯净天空筛选整理自Jennifer Bryan等大神的英文原创作品 PUT new media into a Drive file。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。