OSS的bucket存储视频,前端点击视频是下载视频而不是浏览视频的解决办法

本文讲述了作者在构建视频网站时,如何通过修改Django框架中的阿里云OSS上传头信息,将`Content-Disposition`设置为`inline`,以实现在浏览器中直接播放视频,以及后续遇到的问题和解决方案,包括内容类型自动设置和域名绑定的必要性。
摘要由CSDN通过智能技术生成

最近想做一个视频网站,已经在阿里云上面申请了一个bucket,但是我就依靠这个标签进行访问的时候,是直接下载视频而不是浏览视频,以至于我专门去看了阿里云的开发文档,找了好久好久终于找到了解决办法。

步骤一

修改视频存储时候的header请求头,这里例如我使用的框架是django

from django.shortcuts import render
from .forms import LessonPlanForm
from .models import video
import oss2
# Create your views here.
def submit(request):
    if request.method == 'POST':
        form = LessonPlanForm(request.POST, request.FILES)
        print(form.errors)
        if form.is_valid():
            #阿里云参数设置
            ALIYUN_ACCESS_KEY_ID = 'oss对应的id'
            ALIYUN_ACCESS_KEY_SECRET = 'oss对应的密码'
            ALIYUN_OSS_BUCKET_NAME = 'bucket名字'
            ALIYUN_OSS_ENDPOINT = 'endpoint(我的是:oss-cn-hangzhou.aliyuncs.com)'
            # 生成访问凭证
            auth = oss2.Auth(ALIYUN_ACCESS_KEY_ID,ALIYUN_ACCESS_KEY_SECRET)  # Replace with your own access key and secret
            bucket = oss2.Bucket(auth, ALIYUN_OSS_ENDPOINT, ALIYUN_OSS_BUCKET_NAME)  # Replace with your own endpoint and bucket name
            #从models层获取模型,实例化,把可访问的url存到数据库(目的)
            newVideo = video()
            # 获取到的前端的文件

            Video_file = form.cleaned_data['video']

            # 上传到OSS的根目录下的video_file文件夹,同时返回一个可以访问视频的链接(即放上链接就可以看)

            Video_fileUrl = f'https://{ALIYUN_OSS_BUCKET_NAME}.{ALIYUN_OSS_ENDPOINT}/video_file/{Video_file.name}'


            bucket.put_object(f'video_file/{Video_file.name}',Video_file,headers={'Content-Disposition':'inline'})


            newVideo.Video_file = Video_fileUrl

                
            # 保存数据、文件等操作
            newVideo.save()
            return render(request, 'submit.html')
    else:
        form = LessonPlanForm()
    return render(request, 'submit.html', {'form': form})

这里看到bucket.put_object的header我们对他的设置,设置为inline,这样我们才可以观看视频而不是下载, 

步骤二

我们这里发现即使我在这里设置了inline,但是通过链接任然无法访问,我在这里又卡了一下,于是我就去看了看开发文档,终于找到了问题,原因是在阿里云oss服务上面存储视频的时候,阿里云会自动为你把content-dispositon设置为哦attachment,而如果在bucket没有绑定域名的情况下无法进行修改content-dispositon的,于是我又买了个服务器实例和域名,把bucket绑定到新的域名上面,发现之后视频就可以观看了而不是下载了,详细清参考链接


为什么视频无法观看(阿里云)

bucket绑定域名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值