[英]passing binary data to rest-api
我想將縮略圖上傳到 viemo api ,並且基於 Vimeo doc,我必須將縮略圖文件作為二進制數據包含在請求正文中,我必須從客戶端“fontend”上傳縮略圖並從rest-api“后端”問題是我的rest-api無法正確接收二進制數據,因為我使用的是express.js,有沒有辦法在后端處理二進制數據。
步驟如下:
客戶端發送縮略圖數據 => 后端通過請求正文接收數據並將其發送到 => 端點
客戶端請求
const handleSubmit = (event) => {
event.preventDefault();
const formData = new FormData();
formData.append('selectedFile', new Blob([selectedFile], { type: 'application/json' }));
formData.append('uploadLink', uploadLink);
const headers = {
'Content-Type': 'application/json',
Accept: 'application/vnd.vimeo.*+json;version=3.4',
};
try {
axios
.post(`${backendPostPath}/thumbnail-upload`, formData, {
headers,
})
.then((response) => {
applyThumbnial();
console.log(`${uploadLink}link for upload`);
});
} catch (error) {
console.log(error);
}
};
后端請求無法接收前端帖子的正文請求作為二進制數據,
const ThumbnailUpload = async (req, res) => {
const { uploadLink } = req.body;
const { selectedFile } = req.body;
console.log(uploadLink);
const clientServerOptions = {
uri: `${uploadLink}`,
encoding: null,
body: JSON.stringify({
name: uploadLink,
file: selectedFile,
}),
method: 'PUT',
headers: {
'Content-Type': 'application/json',
Accept: 'application/vnd.vimeo.*+json;version=3.4',
Authorization: getVimeoAuthorization(),
},
};
request(clientServerOptions, function (error, response) {
if (error) {
res.send(error);
} else {
const body = JSON.parse(response.body);
res.send(body);
}
});
};
有什么方法可以讓后端請求正文獲取二進制數據,因為我將數據獲取為“未定義”
抱歉更新晚了,我通過使用客戶端相同的 put 請求解決了這個問題,因為 put 請求不需要 Vimeo 訪問令牌,所以您可以使用我上面提到的相同 put 請求,並從標頭中刪除身份驗證,如以下
const handleSubmit = (event) => {
event.preventDefault();
const formData = new FormData();
formData.append('selectedFile', new Blob([selectedFile], { type: 'image/jpg, image/png' }));
// formData.append('uploadLink', uploadLink);
const headers = {
'Content-Type': 'image/jpg, image/png',
Accept: 'application/vnd.vimeo.*+json;version=3.4',
};
try {
axios
.put(`${uploadLink}`, formData, {
headers,
})
.then((response) => {
console.log(`${uploadLink}link for upload`);
});
} catch (error) {
console.log(error);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.