頂部導航開始 -->

如何將文章內容直接保存到阿里云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號
  • 聯系郵箱:[email protected]
  • 交流請加微信:weibobf2899 或掃下方二維碼
双大床红利扑克1手APP