写在前面:查了很多Django前端上传文件到七牛云的博客,发现基本上是因为引用的JS-SDK版本太老了,从而导致上传失败,或者是引入了许多不相关库,既然我遇到了,当然是盘它啦。需要说明的是,还不清楚七牛云的,可以先去了解学习一下,这里直接讲主要步骤了。
假设你有个模型长这样:
其中箭头所指的很重要,现在要告诉你的是,不管是图片还是视频,你都可以只存储它的url地址,这样有一个好处是,当部署上线后,需要把DEBUG设置为False,图片和视频这样的媒体资源还可以正常显示,少做一些设置。(内心戏:什么?你没有经历过部署后图片显示不出来?算了,当我我没说,咱们继续下面的内容)
引入相关库
首先来看Django后端的:
pip install qiniu
再来看前端的:
看吧,前端的就这么简单就没有了,不需要引入其他的了。至于这两个js库,说明一下第二个,这个的话你可以去七牛云的官网找相关文档,都会有说明怎么打包的。
内心戏:什么?你想要现成的?好吧,两个我都打包好了:https://github.com/sunmouren/django-upload-to-qiniu
获取上传token
首先在Django的settigns.py里设置一些七牛云设置(替换成自己的就可以了):
接着编写获取token函数:
不知道你会不会问,诶,咋不在views.py编写函数呢?这里要告诉你的是,在哪编写都行,只要urls.py有声明就可以了。这里写是因为它通用,先写在这里。其中需要username是因为后面可以用它来构建视频url,方便区别谁上传的。
开始编写前端上传代码,也很简短(骗你的,只是第二步的核心代码简短)
先来捋一下逻辑:要上传到七牛云,首先得要有token,接着要有上传的视频文件,还要有key(这个就是文件名),最后有一些设置(具体看官方文档,注意,真正写的时候,该省的就省,不一定要写那么完美),这部分的html和js我一并放到了前面提供的github上面了。
第一步,获取token:
第二步, 上传到七牛云:
第三步,更新视频url:
第四步,把上面三步整合起来:
编写上面第三步的更新视频url后端代码
写在后面,一定不要像我那么处理模型,这篇文章主要是让你过一遍最新上传文件到七牛云并返回url的前端代码怎么写,有些东西已经被处理掉了,看重点最重要。后面你可以根据你自己喜好去改写。
写在后面的后面:如果你要是给你的网站加入富文本编辑器,那么肯定需要上传图片,我看了一些富文本、markdown编辑器,它们也是获取图片的url, 然后进行一些操作,也就是说,你可以通过今天这个,把它改改就能用。