问题描述
在 cd 一切之前,我会丢弃可能的错误点:
1 - 我的账户是 Premium 并且有权通过 api 上传视频:
2 - 我尝试使用其他文件格式,例如 blob,但我收到另一个错误,基本上是说无法找到文件的位置;
我正在尝试通过表单获取文件,并通过 Node 中的 vimeo-api 将其发送给 vimeo;
无论如何,这是我的代码的实现:
前端调用我的端点:
const startUploadFinal = () => {
const formData = new FormData();
formData.append('video_file',currentFile);
localhost.post('vimeo/blob',formData,{
headers: {
'Content-type': 'multipart/form-data',access_token: `voitto-token ${localStorage.getItem('oauth_token')}`
}
});
};
我端点的路由器:
import { Router } from 'express';
import Vimeo from '../../app/controller/vimeoController';
import AuthMiddleware from '../../app/middleware/auth';
import upload from '../../config/multerConfig';
const routes = new Router();
routes.post(
'/vimeo',upload.single('video_file'),AuthMiddleware,Vimeo.upload
);
export default routes;
使用多路复用上传配置:
import multer from 'multer';
const storage = multer.memoryStorage();
const upload = multer({ storage });
module.exports = upload;
我的端点:
async upload(req,res) {
const client = new Vimeo(client_id,client_secret,fixedToken);
console.log('File:',req.file);
console.log('Size file:',req.file.size);
client.upload(
req.file,{
name: 'Testing',description: 'Tescription Testing','upload.size': req.file.size,'upload.approach': 'tus',},function (uri) {
console.log('File upload completed. Your Vimeo URI is:',uri);
},function (bytesuploaded,bytesTotal) {
const percentage = ((bytesuploaded / bytesTotal) * 100).toFixed(2);
console.log(bytesuploaded,bytesTotal,`${percentage}%`);
},function (error) {
console.log(`${error}`);
}
);
}
在端点打印数据和最终错误:
任何人都可以帮助我解决我做错的事情吗?
解决方法
当源代码仅允许缓冲区时,您尝试上传对象,缓冲区是仅以二进制格式编写的照片/视频,以便计算机更容易阅读。
简单修复:
client.upload(
req.file.buffer,...
}
完整示例:
async function upload(req,res) {
const client = new Vimeo(client_id,client_secret,fixedToken);
console.log('File:',req.file);
console.log('Size file:',req.file.size);
client.upload(
req.file.buffer,{
name: 'Testing',description: 'Tescription Testing','upload.size': req.file.size,'upload.approach': 'tus',},function (uri) {
console.log('File upload completed. Your Vimeo URI is:',uri);
},function (bytesUploaded,bytesTotal) {
const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);
console.log(bytesUploaded,bytesTotal,`${percentage}%`);
},function (error) {
console.log(`${error}`);
}
);
}