使用Asana API在Asana中创建带有附件的任务

时间:2018-12-26 15:49:04

标签: python asana asana-api

我正在尝试使用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)

但是当我尝试传递文件和文件内容的参数时,它显示了一个错误。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

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")