我是BOX API的新手,所以使用了API的v2。我正在从我的应用程序本地进行REST调用。
我想上传以前上传过或未上传过的文件。我知道父文件夹ID和文件名。我需要覆盖现有文件或至少再次调用以查看该文件是否已存在。 我无法使用v2 API进行操作。
我可以毫无问题地上传文件。但是,如果文件已经存在,我当然会收到错误。
对我而言,这是相当基本的东西,所以也许我错过了一些相当明显的东西?
答案 0 :(得分:6)
name
属性,您可以将其用于比较,还有一个id
属性,您可以将其与上传新版本的文件结合使用上面提到的方法。答案 1 :(得分:3)
文件框中的文件ID与您上传的文件ID在错误消息响应中输出,只需调用$data->context_info->conflicts->id
然后使用它来覆盖文件上传新版本文件方法
答案 2 :(得分:1)
您要在API的v2中更正,上传已存在的文件会导致错误。您可以做的是在上传之前检查文件是否存在。
当您尝试download a file时,请在没有“关注重定向”选项的情况下拨打cURL电话。如果响应是302(具有实际下载链接),则表示该文件存在。如果你得到404,它就不存在了。
对于上述内容,重要的是指定cURL不应该遵循重定向,否则如果文件存在,您将最终下载它。
答案 3 :(得分:0)
答案 4 :(得分:0)
对于python的人,可以使用下面的代码。
def upload_file_to_box(client, folder_id, filename):
folder = client.folder(folder_id=folder_id)
items = folder.get_items()
for item in items:
if item.name == filename:
updated_file = client.file(item.id).update_contents(item.name)
print('File "{0}" has been updated'.format(updated_file.name))
return
uploaded_file = folder.upload(filename)
print('File "{0}" has been uploaded'.format(uploaded_file.name))
这将检查特定文件名并将其与文件夹中的所有文件名进行比较,如果存在则更新新版本,否则上传新文件。
您也可以使用以下代码使用 search API 搜索文件夹内的文件名。但是搜索 API 有 10 分钟或更长时间的延迟。
items = client.search().query(query='"{}"'.format(filename), limit=100, ancestor_folders=[folder])