我已经敲了几个小时试图解决这个问题:
我使用Dropzone.js使用预先签名的URL将视频文件上传到私有S3存储桶。目标是稍后检索此文件并使用video
元素播放它。
如果我未在xhr请求中将Content-Type
设置为文件类型,则S3会将其默认为application/octet-stream
。文件上传成功并位于存储桶中的预期位置。
当我尝试使用已签名的网址检索此文件并将其用作我的video
的来源时,它将无法播放 - 该元素会因错误而灰显。此外,如果我在浏览器中访问它,它会在我点击URL而不是播放它时下载文件。
我做了研究,看到它正在下载而不是流媒体,因为我没有指定它是一个视频,所以我试着这样做。
如果我将Content-Type
设置为'video/mp4'
并使用签名网址进行检索,它既不会播放视频元素,也不会在浏览器中播放或下载。似乎这使得文件由于某种原因无法使用。
我已经通过使用手动上传到S3而不是通过Dropzone上传的文件验证我的检索和播放代码是否正常工作。上传过程中出现了问题,无论是使用Dropzone还是S3,我无法弄明白。