无法使用PHP中的API在Teamwork上上载文件



我正在使用以下链接上传一个关于团队工作的文件https://developer.teamwork.com/projects/questions/fileUpload-preferred

在这里,我使用带有CURL的PHP Codeigniter 4.x框架来发送请求,作为对第一步的响应,我得到了Ref和URL这两个值。第一步对我来说很好。

现在,对于下面文档中提到的第二步,

向上面的链接发送一个PUT请求,请求正文中包含"file"。除此之外,您还需要以下标题:

X-Amz-Acl:公共读取,内容长度:文件大小主机:主机从生成链接

我正在传递文件对象

CodeIgniter\HTTP\Files\UploadedFile对象([path:protected]=>/var/www/web116/tmp/phpDyYgj[originalName:protected]=>banner-01.png[名称:protected]=>横幅-01.png[originalMimeType:protected]=>image/png[error:protected]=>0[hasMoved:protected]=>[size:protected]=>639542[pathName:SplFileInfo:private]=>var/www/web116/tmp/phpDyYgjj[fileName:SplFileInfo:private]=>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。

有人能帮我吗?这样我就可以上传团队合作的文件了?我正在为团队合作的特定任务上传一个文件。

感谢

您可以找到另一个API来绕过此问题,直到团队API支持团队能够解决此问题,以下是我为实现此目标所做的:

步骤1:使用APIhttps://apidocs.teamwork.com/docs/teamwork/86ecebd6161af-file-uploading-via-the-api-classic

为此,您对POST/pendingFiles.json进行API调用。实际文件内容通过一个名为"file"的表单字段发送。

如果成功,您将收到一个状态代码201(已创建(和一个包含参考代码的结构。{"pendingFile":{"ref":"tf_xxxxxxxxxxx"}}

ref位是重要的部分,是挂起的文件句柄。

步骤2:使用挂起文件句柄创建一个实际的文件对象下一步是在Teamwork帐户的项目中创建实际的文件对象。为此,您对POST/projects/{id}/files.json进行API调用,其中{id}是要创建文件的项目。

{
“file”: {
  “description”: “Optional string describing the file”,
  “category-id”: “ID of the category you to create the file in. Pass 0 if no category”,
  “category-name”: “String if you want to create a new category – Pass category-id=0 also”,
  “pendingFileRef”: “tf_xxxxxxxxxxxxxxxx”
  }
}

请注意";fileId";而不是";pendingFileRef";如果要将文件附加到任务。

这不像其他API那样是一个挂起的文件。

相关内容

  • 没有找到相关文章

最新更新