android 使用React-Native将视频上传到S3

wkyowqbh  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(142)

我正在尝试在我的react原生应用程序中包含视频上传功能。我已经通过了这里关于这个问题的许多教程和问题,但我认为我遇到的问题与我所看到的不同。视频正在使用我创建的原生组件录制和保存。我目前正在为Android开发,我正在使用MediaRecorder对象保存视频,然后组件将文件路径发送回react native代码进行存储。这似乎可以在react-native中播放视频,但我也想将视频上传到s3并能够在AWS控制台上观看视频。当我在AWS控制台中播放视频时,我得到一个错误“没有找到支持格式和mimetype的视频”。这让我相信,当文件被上传时,有一个编码问题。

  1. const s3 = new AWS.S3()
  2. const uploadFileToS3 = (dat) => {
  3. const params = {
  4. Bucket: bucket,
  5. Key: keyName,
  6. Body: dat,
  7. ContentType: 'video/mp4',
  8. }
  9. return s3.upload(params).promise();
  10. }
  11. try{
  12. console.log("Here! " + filename)
  13. const file = await RNFetchBlob.fs.readFile(filename);
  14. console.log("Starting upload! ")
  15. await uploadFileToS3(file);
  16. console.log("Finished upload! ")
  17. } catch (err) {
  18. console.error(err);
  19. }

字符串
我试过从“@aws-sdk/client-s3”使用PutObjectCommand和S3 Client,我试过multipart uploads和aws' amplify库。所有这些我最终都会卡在“没有找到支持格式和mimetype的视频”。我还试过从“react-native-aws 3”使用RNS 3,它无法正确读取我从android组件存储的文件路径。

5t7ly7z5

5t7ly7z51#

1.请访问这个博客以获得更多的了解。
https://www.mohammadfaisal.dev/blog/how-to-upload-files-to-aws-s3-in-react
1.这里有一些有用的讨论和解决方案。
How to upload video files into an S3 bucket using React
1.我实现并提供了解决方案的帮助下,这一点。
https://aboutreact.com/react-native-upload-file-to-aws-s3-bucket/
1.这就是我如何修改你的问题与我的回应

  1. const AWS = require('aws-sdk');
  2. const RNFetchBlob = require('rn-fetch-blob');
  3. const s3 = new AWS.S3();
  4. const uploadFileToS3 = async (filename, bucket, keyName) => {
  5. try {
  6. console.log("Here! " + filename);
  7. // Read the file as a buffer
  8. const file = await RNFetchBlob.fs.readFile(filename, 'base64');
  9. console.log("Starting upload! ");
  10. const params = {
  11. Bucket: bucket,
  12. Key: keyName,
  13. Body: Buffer.from(file, 'base64'), // Convert base64 to Buffer
  14. // ContentType: 'video/mp4', // Try without specifying ContentType
  15. };
  16. await s3.upload(params).promise();
  17. console.log("Finished upload! ");
  18. }
  19. catch (err) {
  20. console.error(err);
  21. }
  22. };
  23. // Example usage
  24. uploadFileToS3('path/to/your/video.mp4', 'your-s3-bucket-name', 'your-s3-key-name');

字符串

展开查看全部

相关问题