如何将Jira附件上传的Curl代码转换为Guzzle实现?
将Jira附件上传的Curl代码转换为Guzzle实现
以下是完全匹配原Curl逻辑的Guzzle版本代码:
use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Http\UploadedFile; public function addAttachments(UploadedFile $file, string $key) { $client = new Client(); try { $response = $client->post('https://candidwebassets.atlassian.net/rest/api/3/issue/'.$key.'/attachments', [ 'headers' => [ 'X-Atlassian-Token' => 'no-check', 'Accept' => 'application/json', ], 'auth' => [ env('JIRA_USER'), env('JIRA_SECRET') ], 'multipart' => [ [ 'name' => 'file', 'filename' => $file->getClientOriginalName(), 'MIME-Type' => $file->getMimeType(), 'contents' => fopen($file->getPathname(), 'r') ] ] ]); // 可根据需求返回解析后的响应内容 return json_decode($response->getBody(), true); } catch (RequestException $e) { throw new Exception($e->getMessage()); } }
转换关键点说明:
- 文件上传:用Guzzle的
multipart参数替代原Curl的CURLFile,直接读取上传文件的本地路径,同时指定文件名与MIME类型。 - 身份认证:通过Guzzle内置的
auth选项实现基础认证,替代原Curl手动拼接账号密码的写法,更简洁规范。 - 请求头设置:直接通过
headers数组配置对应请求头,完全匹配原Curl的请求头规则。 - 异常处理:捕获Guzzle的
RequestException来处理请求错误,替代原Curl的错误码判断逻辑。
内容的提问来源于stack exchange,提问作者Panda
相关产品推荐
相关产品推荐

