发布网友 发布时间:2024-09-26 08:18
共1个回答
热心网友 时间:7小时前
导读:很多朋友问到关于django怎么用七牛云上传图片的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
七牛云存储对接好网站后上传不了图片,但是能获取存储空间里的文件首先我们先登录阿里旺旺账号,在阿里旺旺面板的下方有一个“淘”字样,单击该按钮。
单击“淘”按钮,会下拉很多选项,在下拉的选项里,我们单击图片空间按钮。
单击图片空间会跳到如图所示页面,这时我们单击菜单栏里的“图片上传”按钮。
单击“图片上传”按钮会出现如图所示,这时我们点击添加图片按钮。点击之后会弹出第二个图的对话框,这时我们选择好要上传的图片,选择好后单击下方的“选好了”按钮。
单击之后会弹出如图对话框,这时我们单击下方的立即上传按钮,点击之后就会弹出第二个图片所示对话框。
在弹出的对话框里,我们单击完成按钮,页面会跳到如图所示,这时我们可以看到刚才的图片已经在图片空间里了。
如何搭建个人独立博客?因为觉得Wordpress啥的模板一点都不好看,就纯手工敲了一个,总计花了一个多月时间,感觉用着还挺顺手。目前总共就花费了7美金在上买了个域名,其他全使用开源的资源,一分钱没花。空间使用了AWS一年的免费主机(真心是业界良心)。
博客架构:服务器:空间使用AWS一年免费的虚拟机,使用ubuntu14.04+Nginx1.8+uWSGI来部署Django应用,从上购买域名,服务器配置:内存:613MB内存,基于Xen32位或64位30GB月流量,其中15G上行流量,15G下行流量主机空间10GB硬盘,1百万以下I/O读写可以免费使用一年,有Linux和Windows操作系统。网站框架:Django1.8。博客后台:修改Django自带的Admin系统,主要添加富文本编辑器用于编写博客,富文本编辑器选择百度的UEditor,其Django的集成版本可以在Github上找到。数据库:使用MySQL,主要便于同Django集成,另外DjangoAdmin后台操作数据库非常方便。前端:框架和UI使用Bootstrap3,布局使用Bootstrap的网格布局,使用网格布局+MediaQuery来做响应式设计,以便支持不同尺寸的设备。使用SyntaxHighlighter来对pre标签中的代码做代码高亮。图片存储:七牛云存储。由于虚拟机整个只有30G空间,图片上传相当不划算,于是寻找外部存储方案,最后发现七牛云存储可以做网站图片外链,每月免费10G流量,10万次免费请求,完全可以不花一分钱满足个人博客的需求。评论和分享:多说评论和分享插件。使用该插件,保证在不设计自己的账号系统,不使用自己的数据库的情况下能够进行文章的评论互动和分享。
站内搜索:百度站内搜索插件。版本控制:Git。使用Git来进行版本控制,项目托管在GitHub上,项目地址为hill1895/hill1895·GitHub。优化:用Nginx来进行静态资源的压缩传输,设置缓存等,可以很大程度上提升网站访问速度。具体搭建过程可以参考博客中的文章,有编程基础的大概一个月就能搞定。
Django上传原理求解随着网站运作,难免有些时候需要上传文件。上传文件自然是上传到网站所在的服务器,日积月累,慢慢地网站存储空间越来越少。而且网站迁移和备份都不方便,使用这些资源时也占用大量服务器流量。
较好的解决方案是使用第三方存储服务器,例如七牛、阿里云OSS、亚马逊S3等。将文件都放到这些存储服务器,可以减少服务器负担。服务器只剩下必要的静态文件和代码。
以阿里云OSS为例,讲解如何使用第三方存储服务器。(刚好最近用到这个,而且Django有其他人写好的第三方库)
首先,需要拥有OSS。这个去阿里云购买即可。购买之后可得到密钥等一系列信息。
接着,安装oss2库,该库是Python对应oss的操作库。
再安装或下载DjangoOSS的Storage库。这些库是继承Django的Storage类,并重写相关方法。Django的Stroage是管理上传文件的存储。如何自定义Storage可参考Django官方文档。
执行如下命令,安装Django-Aliyun-OSS2-Storage:
也可以不用pip安装,打开该第三方库的Github,下载源码到本地。这里我需要修改部分代码,所以直接下载把整个包放到Django项目的根目录(也可其他位置)。
安装下载完成之后,配置Django的Settings,添加如下设置:
另外,还有两个对应参数需要注意一下,MEDIA_ROOT和MEDIA_URL。
MEDIA_ROOT是媒体文件的上传位置根目录,由于设置了BUCKET_NAME,一般在这个bucket中。可以设置为空字符串。
文件自然上传到Django模版的FileField字段设置的upload_to位置。
MEDIA_URL是获取媒体文件的链接前缀,可根据自己的oss文件链接位置添加。
由于上传的文件需要开放被用户下载,BUCKET_ACL_TYPE设置为公共的。若你的静态文件也需要上传到OSS中,设置如下:
设置无误后,重启Django即可使用。上传文件将自动上传到OSS中。
上面提到我要修改里面的源码。因为发现上传的文件在下载时的文件名是一串乱码,不是上传时的文件名。这个需要设置一些header信息,可参考OSS的SDK文档。该header需要在上传文件时就提交,而上面的django-aliyun-oss2-storage在上传文件时没有写入header信息。
打开该包的源码文件backends.py,找到AliyunBaseStorage类的_save方法。修改如下:
这样设置,点击文件链接,即可下载并且下载文件名是上传的文件名。若你不是什么类型文件都需要这么处理,可以判断filename的后缀名加以处理。
结语:以上就是首席CTO笔记为大家介绍的关于django怎么用七牛云上传图片的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。