用SAE自制10G网盘

在本地可以用Django上传文件到Mysql数据库,但在SAE上就行不通了,SAE平台用的是分布式文件系统,官方建议开发者将所有的需要持久化的文件操作都通过Storage实现。Storage是SAE为开发者提供的分布式文件存储服务,用来存放用户的持久化存储的文件

官方说明:用户需要先在Storage的管理界面中创建容器,创建完毕后,用户可以通过以下两种方式操作其中数据:

  • 通过 Cyberduck 或者 swift 等Storage客户端

  • 通过SAE提供的API接口

SAE的storage文档提供了API接口的代码:

http://sae.sina.com.cn/doc/python/storage.html

首先在SAE服务管理开启Storage服务

下面部署代码,编写代码思路,代码分两部分,上传和下载,上传就是将文件upload到Storage中。关于下载,我看遍了Storage接口API就是没有关于下载的API,当时很郁闷,怎么把上传到Storage中的文件再下载下来,之后我进入SAE的Storage的目录中

这是上传到Storage中的文件,然后点文件的名称它会提供一个地址比如:http://pylabsite-pylab.stor.sinaapp.com/Snap.jpg,其实这就是文件的下载地址,然后下载就变得超简单,只用在前端设置一个该地址的超链接就行了,点击之后,就会自动下载。

Django端代码:

models

from django.db import models
 

class Server(models.Model):

        file = models.FileField(upload_to = ‘./‘)

 

        def __unicode__(self):

                return self.username

views

#coding:utf-8
from django.shortcuts import render

from django.shortcuts import render_to_response

from django import forms

from django.http import HttpResponse

from django.views.decorators.csrf import csrf_exempt

from server.models import Server

from django.core.servers.basehttp import FileWrapper

from django.http import StreamingHttpResponse

from django.template import RequestContext

import os

 

 

class UploadForm(forms.Form):

        file = forms.FileField()

 

@csrf_exempt

def upload(request):

        if request.method == "POST":

            form = UploadForm(request.POST,request.FILES)

            if form.is_valid():

                f = form.cleaned_data[‘file‘]

                import sae.const  

                access_key = sae.const.ACCESS_KEY  

                secret_key = sae.const.SECRET_KEY  

                appname = sae.const.APP_NAME  

                domain_name = "pylab" 

                import sae.storage  

                s = sae.storage.Client()  

                ob = sae.storage.Object(f.read())

                url = s.put(domain_name, f.name, ob)  

                return HttpResponse(‘upload OK‘) 

                

        else:

                form = UploadForm()

        from sae.storage import Bucket

        bucket = Bucket(‘pylab‘)

        i = bucket.list()

        return render_to_response(‘upload.html‘,{‘form‘:form,‘i‘:i},context_instance=RequestContext(request))

前端测试代码:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <title></title>

</head>

<body>

<h1>Upload</h1>

<form method="post" enctype="multipart/form-data" >

{% csrf_token %}

{{form.as_p}}

<input type="submit" value="ok"/>

</form>

    {% for k in i %}

            Content:{{k.name}}

         

            <a type="button"  href = ‘http://pylabsite-pylab.stor.sinaapp.com/{{k.name}}‘>Download</a>

            <br/>

    {% endfor %}

</body>

</html>

然后效果就是:

现在简单的网盘就做好了,可以实现文件的上传,上传后的文件点击Download可以下载,Storage免费空间有10G,作为一个网盘来说已经很可观了,但是该Storage单次上传文件不能大于10M。该自制网盘还需要后续优化,比如上传大文件,添加上传进度条,还有CSS方面的美化等等。

时间: 05-01

用SAE自制10G网盘的相关文章

Linux自制离线源,利用百度网盘等下载离线资源

CentOS安装Axel: 目前yum源上没有Axel,我们可以到http://pkgs.repoforge.org/axel/下载rpm包安装. 32位CentOS执行下面命令: wget -c http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.i386.rpmrpm -ivh axel-2.4-1.el5.rf.i386.rpm 64位CentOS执行下面命令: wget -c http://pkgs.repoforge.org/axel/ax

360云盘关闭,网盘最好最靠谱的是这三家

2016年10月20日,360云盘发布公告,与个人消费者说再见了.坦率地讲,我看到这条新闻一点都不觉得奇怪,甚至觉得怎么才关啊?中国大陆百度360这类互联网企业的服务,你还想长期稳定使用?老乡,你到底心里怎么想的? 许多人咨询我,该选择哪家网盘存储呢?答案根本不难! 苹果公司iCloud Drive 对个人消费者来说,iCloud Drive是最佳选择.原因很简单,容量足够用.有人会讽刺了,免费版才5G容量,你说够用?当然够用.不够用你可以花少量的钱购买额外容量啊!我的笔记本电脑才125G硬盘,

不同于其他网盘的云库——够快云库

作为全球领先型的云端存储系统,够快网盘依靠其强大的创新能力以及超强技术功能为客户开发出了客户体验度更高的够快云库技术.接下来我来介绍一下够快云库的优势: 1)团队协作.够快云库可实现文档多人共享.成员可以邀请"小伙伴"到库里,还可以共同维护.编辑整个库中的所有文件.另外还添加了人性化的提醒功能.与此同时,够快云库基于"同步索引"技术,团队成员之间不会因为同步的原因导致本来已经很拥堵的局域网卡死.最后,每个库还新添加了订阅功能,订阅功能主要是想让用户真正使用到一种有边

自定义百度网盘分享密码 提取码

经过分析代码发现,百度网盘的自定义密码是在本地生成的,本地生成?那么我们就可以修改了. 请按照以下步骤进行操作: 在浏览器中打开百度云盘,选中需要分享的文件,然后点击分享按钮: 点击分享按钮后会弹出一个模态框,先不管它,按 F12 打开开发者工具,切换至控制台(Console),将以下代码复制粘贴到控制台,然后回车: 1 javascript:require(["function-widget-1:share/util/service/createLinkShare.js"]).pro

如何邀请好友注册您的网站(模拟百度网盘)

花了一年时间做了个网盘下载站点,有兴趣的朋友可以看看站名:去转盘网 其中有个需求是想模拟百度网盘的邀请好友注册功能,想了很久果然 "皇天不负有心人" ,终于整理出个思路,并且附上代码,希望各位网友多多吐槽.我的思路大体是用网络范围内唯一的字符串uuid为标识去邀请好友,邀请者给个状态位 1 代表邀请者,并给他绑定个唯一uuid.被邀请者给个标识位0 代表被邀请者,如果他注册成功,则可以根据邀请链接获得uuid去查询数据库找到邀请者,找到后给予相应积分即可,代码如下: public St

2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出版 2.<Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理>蔡斌.陈湘萍 著  机械工业出版社2013年4月出版 百度网盘下载地址: http://pan.baidu.com/s/1sjNmkFj

中关村-DIY之国外网盘下载测试

国外网盘下载测试 一.官方方式 1.用浏览器直接打开下载地址,有免费和注册用户两种模式 2.通常用免费方式,需要等待几十秒,输入验证码,生成临时下载链接 3. 用浏览器或者http下载工具下载 主要问题:很多网盘在国内无法访问,用代理可以访问但无法下载 免费方式的下载限制很多,除了速度更主要对单个文件的有下载时间限制 二.代理方式 1.WEB代理:能访问被墙的网盘,但无法下载,不能跳出验证页面 2.socket代理:缺乏稳定有效的代理 3.插件:开眼,打开网盘页面会报错,分析是有代理方面的限制

百度网盘没有跟进,用户也没有因为360云盘容量大而选择放弃百度网盘

作者:何小锋链接:http://www.zhihu.com/question/51800743/answer/127548706来源:知乎著作权归作者所有,转载请联系作者获得授权. 不请自来的.那些说分享功能.政策原因而关闭的网盘,大部分都是为了让政府来背黑锅找的措词!不明真相的群众也乐意相信. 商业的本质是利益,云盘的成本才是绝大部分网盘关闭或者调整的原因!云盘的成本才是绝大部分网盘关闭或者调整的原因!云盘的成本才是绝大部分网盘关闭或者调整的原因! 虽然早在今年9月份就感觉到360云盘快撑不住

网盘的倒掉是不可避免的,因为做网盘的成本是非常巨大的(国内几大网盘就剩百度云、天翼云、和彩云),中国的独服太贵

作者:冯硕链接:http://www.zhihu.com/question/51803053/answer/127549782来源:知乎著作权归作者所有,转载请联系作者获得授权. 很正常的情况.目前全国所有的网盘商均处于巨亏的状态,撤退是非常正确的选择.我在这个回答下新浪微盘为什么要停止个人免费服务?有什么影响? - 冯硕的回答 就说过这个问题了.网盘的倒掉是不可避免的,因为做网盘的成本是非常巨大的.现在活着的网盘,大家且用且珍惜.当时新浪微盘倒掉的时候,我的确准考虑做网盘方面的业务.当时我不仅