YouTube API:如何上传缩略图 (JS)
YouTubeAPI: How to upload thumbnail (JS)
我尝试使用此指南在 youtube 上上传缩略图:https://developers.google.com/youtube/v3/docs/thumbnails/set
我能够使用此 curl 在邮递员上成功 运行 它:
curl --location --request POST 'https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId=<video id>' \
--header 'Authorization: OAuth <token>' \
--header 'Content-Type: image/png' \
--form 'thumbnail=@"/C:/Users/user/Pictures/nami.PNG"'
但是我无法将其转换为 js,目前我所做的是:
// the "file" is the File from <input type="file"> - data on this looks ok
uploadThumbnail async (file) {
const formData = new FromData();
const formData.append('thumbnail', file, 'test.png');
await fetch.post('https://www.googleapis.com/youtube/v3/thumbnails/set', {
headers: {
Authorization: 'Oauth <token>',
'Content-Type': 'multipart/form-data' // I also tried using the file.type here (image/png)
},
query: {
videoId: <video id>
},
body: formData,
})
}
(为了简化逻辑,上面的代码我只是手打,如有错字请见谅)
但这会抛出 The request does not include the image content.
我不明白,我也尝试将文件转换为 Blob,但同样的错误。
正如我的主要 post 上的评论所指出的,我结合了答案并得出了这个(这有效!)
await fetch.post(`https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId=${videoId}&uploadType=media`, {
headers: {
Authorization: 'Bearer <token>',
'Content-Type': file.type
},
body: file,
})
错误是:
- 我的端点是错误的并且缺少
uploads
(这个 API 与其他 youtube 端点不同,所以如果您要重复使用变量 base_url 最好检查一下。
- 使用
Oauth
代替 Bearer
。
- fetch
中没有query
- 无需转换添加formData,直接传文件
我尝试使用此指南在 youtube 上上传缩略图:https://developers.google.com/youtube/v3/docs/thumbnails/set
我能够使用此 curl 在邮递员上成功 运行 它:
curl --location --request POST 'https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId=<video id>' \
--header 'Authorization: OAuth <token>' \
--header 'Content-Type: image/png' \
--form 'thumbnail=@"/C:/Users/user/Pictures/nami.PNG"'
但是我无法将其转换为 js,目前我所做的是:
// the "file" is the File from <input type="file"> - data on this looks ok
uploadThumbnail async (file) {
const formData = new FromData();
const formData.append('thumbnail', file, 'test.png');
await fetch.post('https://www.googleapis.com/youtube/v3/thumbnails/set', {
headers: {
Authorization: 'Oauth <token>',
'Content-Type': 'multipart/form-data' // I also tried using the file.type here (image/png)
},
query: {
videoId: <video id>
},
body: formData,
})
}
(为了简化逻辑,上面的代码我只是手打,如有错字请见谅)
但这会抛出 The request does not include the image content.
我不明白,我也尝试将文件转换为 Blob,但同样的错误。
正如我的主要 post 上的评论所指出的,我结合了答案并得出了这个(这有效!)
await fetch.post(`https://www.googleapis.com/upload/youtube/v3/thumbnails/set?videoId=${videoId}&uploadType=media`, {
headers: {
Authorization: 'Bearer <token>',
'Content-Type': file.type
},
body: file,
})
错误是:
- 我的端点是错误的并且缺少
uploads
(这个 API 与其他 youtube 端点不同,所以如果您要重复使用变量 base_url 最好检查一下。 - 使用
Oauth
代替Bearer
。 - fetch 中没有
- 无需转换添加formData,直接传文件
query