• 【阿里云产品公测】ACE下上传文件永久存储实践



    本帖主要内容:
    ;$,=VB:'  
    阿里ACE下,我是如何实现让上传的文件永久保存的? ,% "!8T  
    本文以PHP为例,具体知识点如下: WD# 96V  
    第一,扩展服务“存储服务(Storage)”的入门基础; uzg(C#sp  
    第二,如何结合实际项目使用; e1Xu:hM  
    uP, iGA  
            
    ?lq  
    2 j.6  
    ]8q#@%v }  
    写教程前,先发发牢骚吧! M.fAFL  
    我为什么要用云引擎ACE?因为我讨厌天天去更新系统、打补丁和查日志等等,这么专业的东西还是交给阿里云的高手们吧,我只管开发系统就好了,这叫分工明确! K8#MQR2@  
    B-^r0/y;  
    我为什么不写怎样创建应用、svn上传文件、伪静态配置等关键步骤?阿里云官方不是已经一步步清清楚楚地写在哪里吗?重写一次好像没多大意义吧?不知道的参考网址:http://ace.aliapp.com/php/quick-start.mdhttps://github.com/AliCloudEngine/doc/wiki W*S}^6ZT`  
    j5m KJC  
    我为什么要写这样一篇教程?因为不管你用阿里云的ACE、百度的BAE、新浪的SAE、京东云的JAE、还是腾讯云的弹性web服务等,都会看见有类似的一句话“提供任意目录和文件写入能力, 但不建议在本地磁盘写文件。任何的本地文件写入、修改将视为临时行为,永久性写入请使用……”,那意味着什么?出现系统崩溃或其他原因时,有可能让你传上去或写进去的文件丢失!要知道数据时最重要的,所以要想办法合理使用数据库和云存储去解决此问题 ]QKo>7%[  
    F t/yPv  
    个人建议:如果要求高的话,尽量使用独立数据库和开放存储服务,因为共享、免费,意味着人多、存在不稳定! ' ` _TFTO  
    ,ZGU   
            
    ICck 0S!  
    mi[t1cN)=  
    PAng(tubl  
    扩展服务“存储服务(Storage)”的入门基础: &O +?#3  
    第一步,创建一个存储空间,名字随意,建议还是和ACE的应用ID一致,方便己辨别: >~@On-t  
      F>Pr`T?>  
    Hjhgu=  
    fGZ56eH:  
    #[ f]-c(!  
    官方提供的方法(https://github.com/AliCloudEngine/doc/wiki/ace-php-sdk-guide-storage),会发现没有获取列表的方法,因为官方已经说明不支持管控功能,需要完整的存储服务管控功能请使用OSS;在教程后面,我会展示如何去自己实现文件管理功能,但不排除以后阿里云会关闭,所以还是建议按官网说的尽量使用付费的OSS q QcQnd2K  
      nQGl]2  
    n%|og^0  
    :HW| mqKd  
    T@wgWE<0y_  
    Emy=q5ryl  
    实例一:如何上传文件到OSSStorage)? (测试地址:http://taishan520.aliapp.com/storage/demo1/) QPX&P{!g  
      {W+IUvn  
    6ChFsteGFr  
    E5aRTDLq  
    IR2=dQS  
    O&dBLh!G  
    实例二:如何从OSSStorage)上获取文件到本地?(测试地址:http://taishan520.aliapp.com/storage/demo2/) rp9?p%  
      Hf /ZaBn  
    <%o9*)F  
    )J*M{Gm6i  
    其中【etag】为文件的MD5值,所以如果要查证文件是否上传完整,可以通过比较OSS(storage)上文件和本地文件的MD5值和文件长度来判定。 dI%?uk  
    ]p8 zT|bv  
    ;,8 )%[  
    Brts ig,4  
    删除文件、移动文件和复制文件等方法就不一一写出来,下面来写一些官方没有明确写出来的文件列表方法。 +GJPj(S  
    实例三:如何从OSSStorage)上获取文件列表?(测试地址:http://taishan520.aliapp.com/storage/demo4/) /#WvC;B  
      ]_BH"ng}  
    8.,d`~  
    @Jx1n Q^  
    H;R~d%!b  
            
    q<j9l'dHG  
    f8 BZkh  
    如何结合实际项目使用: cYp/?  
    实例四:文件上传,并保存到OSSStorage)上;(测试地址:http://taishan520.aliapp.com/)(如果想不影响客户,文件可以先不上传到OSSStorage),然后专门做一个文件同步的处理页面,利用扩展服务里的“定时任务服务(Cron)”来定期执行同步处理页面。) yR? ./M!  
      h!@7'Q  
    |kH.o=  
    c]h@<wnv  
    IyI0|&r2A  
    )=#e*1!b  
    实例五:OSSStorage)文件管理(测试地址:http://taishan520.aliapp.com/storage_list.php)(附加说明:由于代码较长,如想查看全部内容请下载附件) tLi91)oG  
    如果“同步到本地”为灰色不可点,则说明本地已经存在。 9: .m]QN  
      42~.N =2  
    R# T 6]  
    DK eB%k  
    w3ATsIw  
    实例六:本地文件管理(测试地址:http://taishan520.aliapp.com/bendi_list.php)(附加说明:由于代码较长,如想查看全部内容请下载附件) m.p $f$A_  
    (注意:对于需要进行本地文件管理的必须关闭自动永久同步,因为如果你不关闭的情况下,运行本地文件管理“bendi_list.php”,会发现只能看见通过svn上传上去的文件,而不能查看到通过页面上传的文件,但通过“file_exists”函数加路径(例如:file_exists(‘upload/logo.png’))来检索文件是否存在时,返回的结果是存在的。具体为什么,那就要问阿里云的设计人员了。个人感觉可能是因为要实现文件永久保存,所以变化的文件不能存放在临时运行环境。) dQ:F5|p  
    (个人建议:还是宁愿不要用本地管理,保留自动永久同步,这样也算上传资料双备份了,不过就是要牺牲一下性能了。) ?JG^GD7D  
      DF_wMv:>^  
    re_nb)4g  
    同样,灰色代表文件已经在OSS上存在了。 {nXygg J  
      =[8K#PZ$w  
    m~ 5"q%;  
    $[}EV(#y  
    7nNNc[d*=  
    hf]m'5pb  
    实例七:实现OSSStorage)文件和本地文件同步(测试地址:http://taishan520.aliapp.com/storage_bendi_sync.php) R|}N"J_  
    (什么时候会用到?系统崩溃后重启发现上传的文件没了,或者使用集群模式模式,在切换到新机器时等等,也就是发现上传文件在本地没有了的情况下去执行。) 0Dna+V/jI  
    (附加说明,此处写的方法只适合只有少数文件需要同步时使用,因为怕出现处理时间较长导致运行出错。如果文件较多,最好使用只读取文件列表到客户端的浏览器,再使用脚本语言利用Ajax来逐个文件或文件夹处理同步并返回处理结果。) jQzl!f1c3  
    功能说明:【从OSSStorage)获取文件到本地】即单向同步,例如:OSSStorage)存在文件AB,本地存在文件BC,则同步后,OSSStorage)上的文件不变,本地变成存在文件ABC;【从本地备份文件到OSSStorage)】与【从OSSStorage)获取文件到本地】同理,【OSSStorage)与本地双向同步】是指双向同步,例如:OSSStorage)存在文件AB,本地存在文件BC,则同步后,OSSStorage)和本地的文件都存在ABC;(附加说明:这里没有严格去比较哪个文件最新,只是简单的先本地备份到OSSStorage),再从OSSStorage)获取文件到本地。) -&sY*(:n_  
      =qc+sMo  
    y/y~<-|<@  
    /ZD6pF  
    Hc =QSP  
    @`dg:P*[  
    题外话: 1Vdi5;dn  
    原本打算弄一个完善点管理OSSStorage)的功能和界面的,但由于官网没有提供明细的listObject使用方法,只好免了,因为好像看见默认方式是(MaxKeys=100),所以还是感觉很多功能限制。 Jr( =Y@Z '  
    n V7Vc;  
    个人建议: uyxYCc  
    既然有listObject方法,就明细点写出来分享给大家使用,即使官网不去完善地写也有其他高手去代劳,那当然,我不是高手!~~~不会又是想跟我说,若您需要完整的存储服务管控功能,可在阿里云官网开通“开放存储服务OSS”。 IO)#O<  
    q50F!yHC-  
    s@ r{TXEn  
    案例代码: '1:)q  
    下载地址:http://taishan520.aliapp.com/ace_test.rar ,< x/  
    Ztg_='n  
    http://pan.baidu.com/s/1eQgUZMM 4}h}`KZZ  
    ^ *"fC  
    hr}f5Z)^v  

    参加活动:http://promotion.aliyun.com/act/aliyun/freebeta/

     

     


  • 相关阅读:
    I B
    让Xcode的控制台支持LLDB类型的打印
    UINavigationController和UIScrollView一起使用时导致UIScrollView位置偏移
    C语言中如何用printf函数输出百分号?
    运算符的优先级
    How To Ask Question The Smart Way
    WEB浅析(本人小白~)
    博客园的基础设置
    静态页面和动态页面的区别
    <存储小结>(待补充)
  • 原文地址:https://www.cnblogs.com/aliyunblogs/p/4104057.html
Copyright © 2020-2023  润新知