我正在使用以下链接https://developer.teamwork.com/projects/questions/fileUpload-preferred上传一个关于团队工作的文件
在这里,我使用PHP Codeigniter 4.x框架与CURL发送请求和响应的第一步,我得到的参考和URL两个值。即第一步是我的工作很好。
现在进行文档中提到的第二步,如下所示,
向上面的链接发送PUT请求,请求正文中包含“file”。除此之外,您还需要以下标题:
X-Amz-Acl:公开读取,内容长度:文件大小主机:从生成链接到主机
我正在传递文件对象
CodeIgniter\HTTP\Files\UploadedFile对象([路径:受保护] =〉/var/www/web 116/tmp/phpDyYgjj [原始名称:受保护] =〉横幅-01.png [名称:受保护] =〉横幅-01.png [原始MIME类型:受保护] =〉图像/png [错误:受保护] =〉0 [已移动:受保护] =〉[大小:受保护] =〉639542 [路径名称:拆分文件信息:私有] =〉/var/www/web 116/tmp/phpDyYgjj [文件名称:拆分文件信息:私有] =〉phpDyYgjj)
在请求正文中。
下面是我的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // $url is value which I have gotten after first step
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Amz-Acl: public-read',
'Content-Length:' . $fileSize, // size of file
'Host: tw-bucket.s3.amazonaws.com'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['file' => $file])); // $file is file object which I have printed above
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
$result = (array) json_decode($json);
$result['http_code'] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
但是在HTTP代码中,我得到的是403而不是200。
有人能帮我一下吗,这样我就可以上传团队合作的文件了?我正在为团队合作的特定任务上传一个文件。
谢谢
1条答案
按热度按时间s1ag04yj1#
您可以找到另一个API来绕过这个问题,直到Teamwork API支持团队可以修复这个问题,下面是我为使这个工作所做的:
步骤1:使用API https://apidocs.teamwork.com/docs/teamwork/86ecebd6161af-file-uploading-via-the-api-classic
为此,您需要对POST/pendingFiles.json进行API调用。实际的文件内容通过名为“file”的表单字段发送。
如果成功,您将收到状态代码201(已创建)和包含参考代码的结构。{“pendingFile”:{“参考”:“tf_xxxxxxxxxxxxxx”} }
ref位是重要的部分,是挂起文件句柄。
步骤2:使用挂起文件句柄创建实际文件对象下一步是在Teamwork帐户的项目中创建实际文件对象。为此,您需要对POST /projects/{id}/files.json进行API调用,其中{id}是您要创建文件的项目。
如果要将文件附加到任务,请注意“fileId”而不是“pendingFileRef”。
与其他API不同,这不是挂起文件。