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

问题描述 投票:0回答:1

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

但是当我试图传递文件和文件内容的参数时,它会向我显示错误。

有人可以帮我这个吗?

python asana asana-api
1个回答
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")
© www.soinside.com 2019 - 2024. All rights reserved.