Dropbox API v2 - 尝试使用 files_upload() 上传文件 - 抛出 TypeError
Dropbox API v2 - trying to upload file with files_upload() - throws TypeError
我一直在尝试使用 python3
中的 files_upload() 函数将一个简单的文件上传到保管箱
即使尝试 tutorial provided on Dropbox's site 中的代码,我也会收到错误消息,我不明白为什么。我在这里错过了什么?
这是我的代码:
import dropbox
dbx = dropbox.Dropbox("my_access_token")
data = "asd"
dbx.files_upload(data, '/file.txt')
这是我尝试 运行 时收到的错误消息:
Traceback (most recent call last):
File "dbox.py", line 7, in <module>
dbx.files_upload(data, '/file.txt')
File "/usr/local/lib/python3.4/dist-packages/dropbox/base.py", line 1225, in files_upload
f,
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 249, in request
timeout=timeout)
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 341, in request_json_string_with_retry
timeout=timeout)
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 385, in request_json_string
type(request_binary))
TypeError: expected request_binary as binary type, got <class 'str'>
我试过不同的方法:
1.
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f, '/asd.txt', mute = True)
2.
dbx.files_upload("hello", "")
3.
dbx.files_upload("hello", "/")
但我每次都得到同样的错误。
来自 this documentation, it appears that the first argument to files_upload()
needs to be a bytes 对象。这意味着您接近了:
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f, '/asd.txt', mute = True)
试试这个(f.read()
returns 一个 bytes
对象):
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f.read(), '/asd.txt', mute = True)
您也可以尝试传递 data.encode(whatever_encoding)
而不是只传递 data
。我不确定为什么您链接的教程中没有提到这一点。
我一直在尝试使用 python3
中的 files_upload() 函数将一个简单的文件上传到保管箱即使尝试 tutorial provided on Dropbox's site 中的代码,我也会收到错误消息,我不明白为什么。我在这里错过了什么?
这是我的代码:
import dropbox
dbx = dropbox.Dropbox("my_access_token")
data = "asd"
dbx.files_upload(data, '/file.txt')
这是我尝试 运行 时收到的错误消息:
Traceback (most recent call last):
File "dbox.py", line 7, in <module>
dbx.files_upload(data, '/file.txt')
File "/usr/local/lib/python3.4/dist-packages/dropbox/base.py", line 1225, in files_upload
f,
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 249, in request
timeout=timeout)
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 341, in request_json_string_with_retry
timeout=timeout)
File "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 385, in request_json_string
type(request_binary))
TypeError: expected request_binary as binary type, got <class 'str'>
我试过不同的方法:
1.
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f, '/asd.txt', mute = True)
2.
dbx.files_upload("hello", "")
3.
dbx.files_upload("hello", "/")
但我每次都得到同样的错误。
来自 this documentation, it appears that the first argument to files_upload()
needs to be a bytes 对象。这意味着您接近了:
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f, '/asd.txt', mute = True)
试试这个(f.read()
returns 一个 bytes
对象):
with open("/home/pi/Desktop/dbox/asd.txt", "rb") as f:
dbx.files_upload(f.read(), '/asd.txt', mute = True)
您也可以尝试传递 data.encode(whatever_encoding)
而不是只传递 data
。我不确定为什么您链接的教程中没有提到这一点。