gpt4 book ai didi

curl - 如何使用 curl 使用 "Content-Type: multipart/related"上传一个图像文件

转载 作者:行者123 更新时间:2023-12-01 06:15:01 24 4
gpt4 key购买 nike

curl --trace trace.txt -X POST -H 'Content-Type: multipart/related;边界=边界_1234'--data-binary $'--边界_1234\r\n内容类型:应用程序/json; charset=UTF-8\r\n\r\n{\r\n\t"title": "TestFile"\r\n}\r\n\r\n--boundary_1234\r\nContent-Type:图像/jpeg\r\n\r\n' --data-binary '@Image0177.jpg' --data-binary $'\r\n--boundary_1234--\r\n' 'localhost:3000/google/upload/drive/v2/files?uploadType=multipart

不成功,image0177.jpg大小17k,但是上传google驱动是6bit,为什么?

最佳答案

我看到这是一篇相当老的帖子,但我在尝试将 Google Drive API 与 curl 一起使用时遇到了同样的问题,最终找到了解决方案,但使用起来有点棘手,特别是在内容长度计算方面,所以我会留下回复,以防它帮助别人!

根据 google 文档,首先,您应该在主请求中包含 Content-Type、Content-Length 和 Authorization header 。对于 Content-Length,你可以让 curl 自动计算它,所以像这样添加其他标题:

-H "Content-Type: multipart/related; boundary=287032381131322"
-H "Authorization: Bearer <Your Oauth2 Access Token>"

其次,您需要在元数据中包含一个多部分部分。这部分需要从边界开始,后面是 Content-Type 头:

--287032381131322
Content-Type: application/json; charset=UTF-8

后面是您的元数据内容:

{\"name\":\"Test\"}

下一部分,是二进制数据的边界开始,它必须再次包含边界分隔符和 Content-Type header :

--287032381131322
Content-Type: application/octet-stream

后面是你要上传的二进制数据,简单传递为:

--data-binary @file.ext

最后,您应该包含一个用于关闭边界分隔符的新部分:

--287032381131322--

所以在我的示例中,使用 5679 字节的文件,这将是完整的命令和来自 google 的回复:

curl -v -H "Content-Type: multipart/related; boundary=287032381131322"      \
-H "Authorization: Bearer <My Oauth2 Access Token>" \
--data-binary $'--287032381131322\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n{\"name\":\"Test\"}\r\n--287032381131322\r\nContent-Type: application/octet-stream\r\n\r\n' \
--data-binary @b0c11d3b40b71ed08108e5dad7f6ecee-0 \
--data-binary $'\r\n--287032381131322--' \
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"

> POST /upload/drive/v3/files?uploadType=multipart HTTP/1.1
> Host: www.googleapis.com
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Type: multipart/related; boundary=287032381131322
> Authorization: Bearer <My Oauth2 Access Token>
> Content-Length: 5848
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< X-GUploader-UploadID: <My Uploader ID>
< Vary: Origin
< Vary: X-Origin
< Content-Type: application/json; charset=UTF-8
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Mon, 01 Jan 1990 00:00:00 GMT
< Date: Mon, 24 Jul 2017 20:56:50 GMT
< Content-Length: 123
< Server: UploadServer
< Alt-Svc: quic=":443"; ma=2592000; v="39,38,37,36,35"
<
{
"kind": "drive#file",
"id": "0B-4U01-IEMlATjdfbVNqQURiN0U",
"name": "Test",
"mimeType": "application/octet-stream"
}
* Connection #0 to host www.googleapis.com left intact

关于curl - 如何使用 curl 使用 "Content-Type: multipart/related"上传一个图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com