对于内容性网站,文章内容是网站的核心,特别是一些新闻网站、技术博客等网站,每天都会有大量的内容发布,每篇文章几百到几千字,常年累月,这些文字内容占用的数据库资源也是相当大的,而数据库资源又比较贵,如果我们能够把这部分内容放在阿里云的云盘阿里云OSS中,就可以极大的节省数据库资源,从而节省网站成本。
本文主要讲述如何将网站发布的内容保存到阿里云OSS中。
想要把内容保存到阿里云OSS中,首先肯定是要有aliyunOSS账号,登录账号,获取阿里云OSS的key和secret两个参数。
在阿里云OSS中创建新的bucket,如创建bucket名称为zixuephp。
如上图中,图片右上角的位置有AccessKeys,点击该链接就会跳转到阿里云OSS的Access Key管理页面,如下图。图中红线圈起来的zixuephp字符,就是自己创建的bucket。
在阿里云OSS的Access Key管理页面中,Access Key Secret是隐藏 起来的,点击显示即可查看。
其中要注意的是阿里云OSS的bucket必须要设置为公共访问权限才可以,否则从自己的网站上是无权访问阿里云OSS上的私有内容的。
然后还需要获取到我们创建的bucket的OSS外网域名,获取阿里云OSS外网域名的位置如下图。
到此为止,我们就获取到了阿里云OSS的各项参数。
本案例是使用的thinkphp来进行的,所以讲前面获取到的阿里云OSS的Access Key ID、Access Key Secret和OSS外网域名配置到thinkphp的配置文件config.php中。配置如下图。
配置完成之后,要使用阿里云OSS对象存储,还需要定义对象上传阿里云OSS的方法。
在thinkphp中,配置全局通用函数需要在thinkphp项目目录的common文件夹中,创建common.php文件,在该文件中定义公用函数即可。定义的函数如下:
在全局函数文件common.php文件中,共定义了两个函数,分别是实例化阿里云OSS对象函数new_oss(如此方可使用阿里云OSS提供的上传等各种文件操作方法)、将文章内容上传到阿里云OSS的方法uploadObject($str,$id)。
定义好阿里云OSS的操作方法之后,就可以在项目中使用定义的方法,将发布的文章内容直接保存到阿里云OSS中。
自定义的将文章内容直接保存到阿里云OSS中的方法具体使用如上图,我们在发布文章页面,用post方式提交表单,然后在php页面接收提交的文章内容,调用上传阿里云OSS方法,将文章内容和生成的唯一标识符$id作为参数传给上传函数,则可以把我们发布的文章保存到阿里云OSS中了,同时该函数会返回上传的文章内容在阿里云OSS中的对象名称,上图中将其赋值给$data['article_content']变量,然后将该变量保存到数据库中,我们在前台访问该文章的时候,首先需要从数据库中获取到该文章在阿里云OSS的存储对象名称,然后将其与OSS外网域名结合,就获取到了文章在阿里云OSS中的存储路径。
但是此时的路径直接访问的话,是一串32位的字符串,就是我们前面调用函数的时候,传递的第二个参数,一个唯一标识符,这显然不是我们想要的,我们需要的是查看文章的内容。
具体的解决办法是使用php原生的file_get_contents方法,将该路径的内容解析出来即可获取到完整的文章内容。如下图:
图中用assign方法,讲获取的内容传递到模板页面展示,在模板页面出来该变量即可正常显示文章内容。
补充:
在实例化阿里云OSS的时候,使用到了阿里云OSS的SDK类文件,我们需要把它放在thinkphp的ThinkPHP\Extend\Vendor文件夹下面。
阿里云OSS的SDK下载地址:链接:http://pan.baidu.com/s/1hrTdCoc 密码:mpfs
宠物免费领养小程序,欢迎来踩