如何通过API将Mp3文件提交到Gitlab中的文件夹
How to Commit Mp3 Files to Folders in Gitlab through API
我正在尝试通过 API.
将文件提交到 Gitlab
该代码已经运行了 6 个多月,但现在已停止运行,代码中没有任何更改。该文件已提交到 Gitlab,但已损坏。
我浏览了 Guzzle 文档,一切看起来都是正确的,我也对 Gitlab 文档中关于提交的内容做了同样的事情。
我现在正在使用 Laravel Illuminate/Http class 发送提交,但同样的事情仍在发生。我可以提交到 Gitlab,但文件格式不正确。
$response = Http::withHeaders([
'PRIVATE-TOKEN' => $gitlab_token,
])
->post('https://gitlab.com/api/v4/projects/.../repository/commits/', [
'branch' => 'test-branch',
'commit_message' => 'Updated audio file test.mp3',
'actions' => array(array(
'action' => 'update',
'file_path' => 'filePath/../.mp3',
'content' => base64_encode($var)
)),
]);
如果我不将文件内容编码为 base 64,我会收到错误消息:
Malformed UTF-8 characters, possibly incorrectly encoded in file
API 方面是否有任何变化影响了提交文件的处理方式?还有其他人找到解决方案吗?
我认为你有两个问题;首先没有指定内容类型。 post 请求将像带文件附件的 multipart/form-data
或不带文件附件的 application/x-www-url-encoded
一样发送。此 API 需要 JSON 个数据。
其次,commit endpoint中有一个参数指定文件编码。它默认为“文本”,但您发送的是 base64 编码的文件。
我对 Gitlab 不够熟悉 API 不能肯定地说,但是你的 file_path
属性 看起来也很奇怪;不应该只是将“.mp3”放入该目录吗?
试试这个:
$response = Http::withHeaders([
'PRIVATE-TOKEN' => $gitlab_token,
'Content-Type' => 'application/json',
])
->post('https://gitlab.com/api/v4/projects/.../repository/commits/', [
'branch' => 'test-branch',
'commit_message' => 'Updated audio file test.mp3',
'actions' => [
[
'action' => 'update',
'file_path' => '.mp3',
'content' => base64_encode($var),
'encoding' => 'base64',
]
],
]);
我正在尝试通过 API.
将文件提交到 Gitlab该代码已经运行了 6 个多月,但现在已停止运行,代码中没有任何更改。该文件已提交到 Gitlab,但已损坏。
我浏览了 Guzzle 文档,一切看起来都是正确的,我也对 Gitlab 文档中关于提交的内容做了同样的事情。
我现在正在使用 Laravel Illuminate/Http class 发送提交,但同样的事情仍在发生。我可以提交到 Gitlab,但文件格式不正确。
$response = Http::withHeaders([
'PRIVATE-TOKEN' => $gitlab_token,
])
->post('https://gitlab.com/api/v4/projects/.../repository/commits/', [
'branch' => 'test-branch',
'commit_message' => 'Updated audio file test.mp3',
'actions' => array(array(
'action' => 'update',
'file_path' => 'filePath/../.mp3',
'content' => base64_encode($var)
)),
]);
如果我不将文件内容编码为 base 64,我会收到错误消息:
Malformed UTF-8 characters, possibly incorrectly encoded in file
API 方面是否有任何变化影响了提交文件的处理方式?还有其他人找到解决方案吗?
我认为你有两个问题;首先没有指定内容类型。 post 请求将像带文件附件的 multipart/form-data
或不带文件附件的 application/x-www-url-encoded
一样发送。此 API 需要 JSON 个数据。
其次,commit endpoint中有一个参数指定文件编码。它默认为“文本”,但您发送的是 base64 编码的文件。
我对 Gitlab 不够熟悉 API 不能肯定地说,但是你的 file_path
属性 看起来也很奇怪;不应该只是将“.mp3”放入该目录吗?
试试这个:
$response = Http::withHeaders([
'PRIVATE-TOKEN' => $gitlab_token,
'Content-Type' => 'application/json',
])
->post('https://gitlab.com/api/v4/projects/.../repository/commits/', [
'branch' => 'test-branch',
'commit_message' => 'Updated audio file test.mp3',
'actions' => [
[
'action' => 'update',
'file_path' => '.mp3',
'content' => base64_encode($var),
'encoding' => 'base64',
]
],
]);