在 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。