1

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

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

现在对于文档中提到的第二步,如下所示,

向上面的链接发送 PUT 请求,请求正文中包含“文件”。除此之外,您还需要以下标头:

X-Amz-Acl:公共读取,内容长度:文件大小主机:host-from-the-generate-link

我正在传递文件对象

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

谁能帮我解决这个问题,以便我可以在团队合作中上传文件?我正在为团队合作的特定任务上传文件。

谢谢

4

0 回答 0