Ste*_*e-O 9 python python-3.x box-api boxapiv2
我目前有我的代码的上传部分工作,我将如何将其转换为将从 box 文件夹中下载相应文件的程序?
这是上传程序:
import requests
import json
#the user acces token
access_token = 'UfUNeHhv4gIxFCn5WEXHgBJwfG8gHT2o'
#the name of the file as you want it to appear in box
dst_filename = 'box_file'
#the actual file path
src_directory = 'C:\Python\cache\\'
#the name of the file to be transferred
src_filename = 'Wildlife.wmv'
#the id of the folder you want to upload to
parent_id = '0'
counter = 1
for counter in range(1, 6):
src_file = (src_directory + src_filename + '-' + str(counter))
print(src_file)
box_filename = (dst_filename + '-' + str(counter))
headers = { 'Authorization': 'Bearer {0}'.format(access_token)}
url = 'https://upload.box.com/api/2.0/files/content'
#open(src_file,'rb') - opens the source file with the buffered reader
files = { 'filename': (box_filename, open(src_file,'rb')) }
data = { "parent_id": parent_id }
response = requests.post(url, data=data, files=files, headers=headers)
#file_info = response.json()
#print(file_info)
print(response)
print(url, data, files, headers)
counter = counter + 1
Run Code Online (Sandbox Code Playgroud)
这是 Box API 文档提供的用于下载文件的示例 curl 请求。
curl -L https://api.box.com/2.0/files/FILE_ID/content \
-H "Authorization: Bearer ACCESS_TOKEN" \
-o FILE_PATH/file_name.txt
Run Code Online (Sandbox Code Playgroud)
这个问题的第二部分:有没有办法改变这个程序(和下载程序)来处理文件夹中的所有文件,不管文件的名称是什么?
我是编程新手,所以请原谅我在这方面缺乏技能/知识。
小智 7
假设您的授权正确,您可以通过在现有代码中添加几行代码来下载文件。这会将数据从 box 文件复制到本地文件,这里的名称是 FileFromBox.xlx
with open('FileFromBox.xls', 'wb') as open_file:
client.file('FileId_of_box_file').download_to(open_file)
open_file.close()
Run Code Online (Sandbox Code Playgroud)
我知道很久以前就有人问过这个问题,但我仍然相信很多人正在寻找实现这一目标的方法。
请查看Box SDK了解更多详细信息。
我正在使用 OAuth2.0 - 自定义应用程序。您可以从开发人员控制台创建凭据。
这是代码。
from boxsdk import OAuth2, Client
#from boxsdk import Folder
auth = OAuth2(
client_id='fbxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9',
client_secret='bPxxxxxxxxxxxxxxxxxxxxxxxxx4Or',
access_token='QExxxxxxxxxxxxxxxxxxxxxxxxxxwt',
)
client = Client(auth)
root_folder = client.root_folder().get()
items = root_folder.get_items()
for item in items:
print('{0} {1} is named "{2}"'.format(item.type.capitalize(), item.id, item.name))
with open(item.name, 'wb') as open_file:
client.file(item.id).download_to(open_file)
open_file.close()
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。感谢Python boxsdk 2.0.0 文档。
我建议你看看Box SDK
正如您在他们的文档中看到的那样,在与您的客户进行身份验证后,您只需要运行以下行:
client.file(file_id='SOME_FILE_ID').content()
Run Code Online (Sandbox Code Playgroud)
Box SDK 文档中有更多信息。如果这不能满足您的需求,因为您想创建自己的 Box SDK,那么请等待其他人对您的问题做出具体回应。谢谢。
| 归档时间: |
|
| 查看次数: |
17970 次 |
| 最近记录: |