我正在尝试使用Asana的API发送图像,但它只是附加一个空白文件。这是我一直在使用的代码。
client.attachments.create_on_task(task_id=123456789,file_content="Url_of_file",file_name='Name_of_File',file_content_type="image/jpeg")
我尝试使用不同的文件格式,如.txt和.png,但由于某种原因,Asana API阻止了我的请求。它只是在Asana上发布黑色图像。我试图将文件转换为base64,但它仍然无法正常工作
在这个原始文档(下面)中,它表明我们需要传递两个参数;一个用于文件的内容,另一个用于文件本身('file')。
def create_on_task(self, task_id, file_content, file_name, file_content_type=None, **options):
"""Upload an attachment for a task. Accepts a file object or string, file name, and optional file Content-Type"""
path = '/tasks/%d/attachments' % (task_id)
return self.client.request('post', path, files=[('file', (file_name, file_content, file_content_type))], **options)
但是当我试图传递文件和文件内容的参数时,它会向我显示错误。
有人可以帮我这个吗?
Asana开发论坛上的另一个用户使用Curl API遇到了同样的问题。 (https://forum.asana.com/t/sending-file-with-api/16897/2)。显然它与“多部分表单上传”有关。
通过stackoverflow(How to send a "multipart/form-data" with requests in python?)查看另一个线程,似乎必须以二进制文件读取文件对象。
所以参数是:
client.attachments.create_on_task(task_id=<task id here>,file_content=open(filename_with_path, 'rb'),file_name='Name_of_File',file_content_type="image/jpeg")