Node.js 无法将视频成功上载到AWS S3

Node.js 无法将视频成功上载到AWS S3,node.js,react-native,amazon-s3,Node.js,React Native,Amazon S3,我对视频从React Native发送到后端并在S3上运行的方式有点迷茫。所有的帮助都将被感激,尤其是在我可能出错的地方 最初,我用Expo相机录制视频。一旦停止记录,我们使用fetch发送数据,如下所示: const startRecording = async () => { setIsRecording(true); const video = await camera.recordAsync({ maxDuration: 15 });

我对视频从React Native发送到后端并在S3上运行的方式有点迷茫。所有的帮助都将被感激,尤其是在我可能出错的地方

最初,我用Expo相机录制视频。一旦停止记录,我们使用fetch发送数据,如下所示:

const startRecording = async () => {
    setIsRecording(true);
    const video = await camera.recordAsync({
        maxDuration: 15
    });

    const data = new FormData();
    data.append('video', {
        name: 'mobile-video-upload',
        uri: video.uri
    });

    try {
        const res = await fetch('url/users/testing', {
            method: 'post',
            body: data
        });
    } catch (error) {
        console.log('error uploading');
    }
};
我们通过IOS从摄像头组件获取的数据类型为:

Object {
 "uri": "...Camera/D3B7B5F5-6A17-4C45-A0BE-897956A9E637.mov",
}
在后端,我使用了一个称为
multer
的中间件。我的后端路由如下所示

const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

router.post('/testing', upload.single('video'), async (req, res) => {
let buffer = null;
fs.readFile(req.file.path, (err, data) => {
    if (err) {
        console.log('There was an error reading file: ', err);
    }
    buffer = data;
});

const params = {
    Bucket: bucket_name,
    Key: 'testing124.mov',
    ContentType: req.file.mimetype,
    Body: buffer
};

try {
    let uploadPr = await s3.putObject(params).promise();
    console.log(uploadPr);
} catch (error) {
    console.log('There was an err ', error);
}
我们在
req.file
中看到的数据是:

{
 fieldname: 'video',
 originalname: 'mobile-video-upload',
 encoding: '7bit',
 mimetype: 'video/quicktime',
 destination: 'uploads/',
 filename: 'aed58f2dfbcc8daa7964fb3df7d3b4f4',
 path: 'uploads/aed58f2dfbcc8daa7964fb3df7d3b4f4',
 size: 480422
}
为了上传有效的视频,我可能做错了什么?无论是下载文件还是尝试使用链接查看视频,我都无法从s3查看视频


感谢您提供的所有帮助。

如果您已经在使用multer,请使用:

谢谢。这是正确而完美的答案:)