顶部导航开始 -->

如何将文章内容直接保存到阿里云OSS中?

对于内容性网站,文章内容是网站的核心,特别是一些新闻网站、技术博客等网站,每天都会有大量的内容发布,每篇文章几百到几千字,常年累月,这些文字内容占用的数据库资源也是相当大的,而数据库资源又比较贵,如果我们能够把这部分内容放在阿里云的云盘阿里云OSS中,就可以极大的节省数据库资源,从而节省网站成本。

本文主要讲述如何将网站发布的内容保存到阿里云OSS中。

想要把内容保存到阿里云OSS中,首先肯定是要有aliyunOSS账号,登录账号,获取阿里云OSS的key和secret两个参数。

在阿里云OSS中创建新的bucket,如创建bucket名称为zixuephp。自学php博客

如上图中,图片右上角的位置有AccessKeys,点击该链接就会跳转到阿里云OSS的Access Key管理页面,如下图。图中红线圈起来的zixuephp字符,就是自己创建的bucket。

自学php博客

在阿里云OSS的Access Key管理页面中,Access Key Secret是隐藏 起来的,点击显示即可查看。

其中要注意的是阿里云OSS的bucket必须要设置为公共访问权限才可以,否则从自己的网站上是无权访问阿里云OSS上的私有内容的。

然后还需要获取到我们创建的bucket的OSS外网域名,获取阿里云OSS外网域名的位置如下图。

自学php博客

到此为止,我们就获取到了阿里云OSS的各项参数。

本案例是使用的thinkphp来进行的,所以讲前面获取到的阿里云OSS的Access Key ID、Access Key Secret和OSS外网域名配置到thinkphp的配置文件config.php中。配置如下图。

自学php博客

配置完成之后,要使用阿里云OSS对象存储,还需要定义对象上传阿里云OSS的方法。

在thinkphp中,配置全局通用函数需要在thinkphp项目目录的common文件夹中,创建common.php文件,在该文件中定义公用函数即可。定义的函数如下:

自学php博客

自学php博客

在全局函数文件common.php文件中,共定义了两个函数,分别是实例化阿里云OSS对象函数new_oss(如此方可使用阿里云OSS提供的上传等各种文件操作方法)、将文章内容上传到阿里云OSS的方法uploadObject($str,$id)。

定义好阿里云OSS的操作方法之后,就可以在项目中使用定义的方法,将发布的文章内容直接保存到阿里云OSS中。

自学php博客

自定义的将文章内容直接保存到阿里云OSS中的方法具体使用如上图,我们在发布文章页面,用post方式提交表单,然后在php页面接收提交的文章内容,调用上传阿里云OSS方法,将文章内容和生成的唯一标识符$id作为参数传给上传函数,则可以把我们发布的文章保存到阿里云OSS中了,同时该函数会返回上传的文章内容在阿里云OSS中的对象名称,上图中将其赋值给$data['article_content']变量,然后将该变量保存到数据库中,我们在前台访问该文章的时候,首先需要从数据库中获取到该文章在阿里云OSS的存储对象名称,然后将其与OSS外网域名结合,就获取到了文章在阿里云OSS中的存储路径。

但是此时的路径直接访问的话,是一串32位的字符串,就是我们前面调用函数的时候,传递的第二个参数,一个唯一标识符,这显然不是我们想要的,我们需要的是查看文章的内容。

具体的解决办法是使用php原生的file_get_contents方法,将该路径的内容解析出来即可获取到完整的文章内容。如下图:

自学php博客

图中用assign方法,讲获取的内容传递到模板页面展示,在模板页面出来该变量即可正常显示文章内容。


补充:

在实例化阿里云OSS的时候,使用到了阿里云OSS的SDK类文件,我们需要把它放在thinkphp的ThinkPHP\Extend\Vendor文件夹下面。

自学php博客

阿里云OSS的SDK下载地址:链接:http://pan.baidu.com/s/1hrTdCoc 密码:mpfs

自学php博客
请先登陆后发表评论
  • 最新评论
  • 总共2条评论
自学php博客

lb491798689白俊遥博客非常好,我试了,可以的,谢谢分享。

2016-10-08 23:48:54 回复

自学php博客

51金色沙滩白俊遥博客好,写的很详细,试了可以的,非常感谢分享。

2016-10-08 23:47:43 回复

  • © 2014-2016 zixuephp.cn 版权所有
  • ICP证:皖ICP备16012107号
  • 联系邮箱:510082587@qq.com
  • 交流请加微信:weibobf2899 或扫下方二维码