Django二次開發對接FastDFS

1.自定義文件存儲器類

  1. 配置文件settings中加入如下配置

# 設置Django的文件存儲類、(名字固定)
DEFAULT_FILE_STORAGE='utils.fdfs.storage.FDFSStorage'# 設置fdfs使用的client.conf文件路徑(名字自己定義)
FDFS_CLIENT_CONF='./utils/fdfs/client.conf'# 設置fdfs存儲服務器上nginx的IP和端口號(名字自己定義)
FDFS_URL='http://172.16.179.131:8888/'
  1. 創建utils/fdfs 目錄
    在這里插入圖片描述
  2. storage.py文件中自定義文件存儲類

FDFSStorage繼承Storage,并重寫_open、_save方法

from django.core.files.storage import Storage
from django.conf import settings
from fdfs_client.client import Fdfs_clientclass FDFSStorage(Storage):'''fast dfs文件存儲類'''def __init__(self, client_conf=None, base_url=None):'''初始化'''if client_conf is None:client_conf = settings.FDFS_CLIENT_CONFself.client_conf = client_confif base_url is None:base_url = settings.FDFS_URLself.base_url = base_urldef _open(self, name, mode='rb'):'''打開文件時使用'''passdef _save(self, name, content):'''保存文件時使用'''# name:你選擇上傳文件的名字# content:包含你上傳文件內容的File對象# 創建一個Fdfs_client對象client = Fdfs_client(self.client_conf)# 上傳文件到fast dfs系統中res = client.upload_by_buffer(content.read())# dict# {#     'Group name': group_name,#     'Remote file_id': remote_file_id,#     'Status': 'Upload successed.',#     'Local file name': '',#     'Uploaded size': upload_size,#     'Storage IP': storage_ip# }if res.get('Status') != 'Upload successed.':# 上傳失敗raise Exception('上傳文件到fast dfs失敗')# 獲取返回的文件IDfilename = res.get('Remote file_id')return filenamedef exists(self, name):'''Django判斷文件名是否可用'''return Falsedef url(self, name):'''返回訪問文件的url路徑'''return self.base_url+name

2.項目上傳圖片和使用圖片流程

在這里插入圖片描述

3.FastDFS結合Nginx優點

1)海量存儲,存儲容量擴展方便
2)文件內容重復
3)結合Nginx提高網站提供圖片的效率

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452813.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452813.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452813.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信支付 java 集成案例_Spring Boot項目中集成微信支付v3

1. 前言最近忙的一批,難得今天有喘氣的機會就趕緊把最近在開發中的一些成果分享出來。前幾日分享了自己寫的一個微信支付V3的開發包payment-spring-boot-starter,就忙里偷閑完善了一波。期間給微信支付提交了6個BUG,跟微信支付的產品溝通了好…

單挑力扣(LeetCode)SQL題:1308. 不同性別每日分數總計

相信很多學習SQL的小伙伴都面臨這樣的困境,學習完書本上的SQL基礎知識后,一方面想測試下自己的水平;另一方面想進一步提升,卻不知道方法。 其實,對于技能型知識,我的觀點一貫都是:多練習、多實…

需求與范圍駕馭深刻反省總結

每天都在講范圍、說需求,真的到了想整理出點什么的時候,卻一下子不知從何說起。也許是熟悉麻痹癥吧。根據我的破經歷,在需求方面有幾個是最搞人的,只要我們方法得當,雖然不一定能夠完全駕馭,但起碼可以改善…

16. vim

vim編輯器是vi的升級版本,帶顏色顯示安裝yum install -y vim-enhanced將passwd文件復制到其他目錄下,vim后沒有顏色 一般模式上下左右方向鍵或kjhl四個鍵移動光標n方向鍵 向特定方向移動n位ctrl b 或 pageup 向上翻頁ctrl f 或 pagedown 向下翻頁0或sh…

軟件生命周期

軟件生命周期由軟件定義、軟件開發和運行維護 ( 也稱為軟件維護 )3 個時期組成,每個時期又進一步劃分成若干個 階段 。

Jmeter(三)_配置元件

HTTP Cookie Manager 用來存儲瀏覽器產生的用戶信息 Clear Cookies each Iteration:每次迭代請求,清空cookies,GUI中定義的任何cookie都不會被清除。Implementation:默認HC4CookieHandlerCookie Policy:將用于管理Cook…

山寨版項目管理經驗小結

不知道這個標題是否合適。 忙了互聯網,再忙作軟件,今天好不容易閑下來,寫點最近總結的一些經驗。最近在和北京幾家大的軟件公司的合作過程中,也許我所看到的,可能不代表全部,但是值得從事這個行業的人重視。…

Django項目--首頁靜態化

0前言 1.使用Celery生成靜態頁面 task.py中新增任務函數generate_static_index_html(),任務函數生成靜態頁面。 app.task def generate_static_index_html():產生首頁靜態頁面# 獲取商品的種類信息types GoodsType.objects.all()# 獲取首頁輪播商品信息goods_bann…

C語言指針,申請、釋放內存,線程

2019獨角獸企業重金招聘Python工程師標準>>> 1:普通情況下,C語言的指針是使用虛擬地址,并非物理地址; 2:C語言mallco函數可以根據輸入的值,申請一塊連續的內存;free(*p&a…

Docker在Ubuntu16.04上安裝

轉自:http://blog.51cto.com/collen7788/2047800 1、添加Docker源 sudo apt-get update 2、增加CA證書 sudo apt-get install apt-transport-https ca-certificates 3、添加GPG Key(一種加密手段) sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:…

java偽協議_通過偽協議解決父頁面與iframe頁面通信的問題

我們經常會有父頁面與iframe頁面的操作,比如這個iframe里面的內容是js寫的。如以下代碼var iframe document.getElementById("iframe"),doc iframe.contentWindow.document;doc.open();doc.write("---------something------");doc.close();以…

Django項目--靜態首頁的數據緩存(設置、獲取、更新)

0 前言 將處理計算的結果先臨時保存起來,下次使用的時候可以先直接使用,如果沒有這個備份的數據,重新進行計算處理。 將緩存數據保存在內存中 (本項目中保存在redis中) cache注意事項: 1)如果…

關于騰訊算法大賽

騰訊算法大賽 本文參考于我協會前會長吳師兄的文檔 騰訊社交廣告高校算法大賽是面向高校大學生的算法大賽,作為騰訊核心的廣告業務單元,騰訊社交廣告通過對海量社交數據進行深入分析,構建多樣廣告場景,與8億用戶連接對話。在大數據…

列表推導式

#麻煩辦法new_lst []for i in range(10): new_lst.append(i**2)print(new_lst)#簡單辦法print([i**2 for i in range(10)])# 小題下面列表中取余list_a [1,2,3,-5,20,-7]print([i%2 for i in list_a])# 30以內所有能被3整除的數print([won for won in range(30) if won%3 …

軟件過程

軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。 軟件過程描述為了開發出客戶需要的軟件,什么人(who)、在什么時候(when)、做什么事(what&#x…

【總結整理】JavaScript的DOM事件學習(慕課網)

事件:在文檔或者瀏覽器窗口中發生的一些,特定的交互瞬間 HTML和JavaScript的交互通過事件 來實現 比如:1.滾動條向下滑動,加載圖片 2.圖片輪播,鼠標由2-5頁調換 本章內容1、理解事件流2、使用事件處理程序3、不同的事件…

Python面試題總結(6)--數據類型(綜合)

1. Python 里面如何實現 tuple 和 list 的轉換? 答: Python 中的類型轉換,一般通過類型強轉即可完成 tuple 轉 list 使用 list() 方法 list 轉 tuple 使用 tuple() 方法 2. 我們知道對于列表可以使用切片操作進行部分元素的選擇&#xff0c…

項目經理需要的思維批判

想做好項目經理,就一定要改變你的思維方式。這對于技術出身的朋友尤其重要。 清末人們自以為天朝,他國皆為蠻夷。結果如何呢?喪師辱國,自己淪為病夫。其根本莫非自己腦筋不對頭?后來又搞洋務運動,以為洋人…

NavigationView更改菜單icon和title顏色變化效果

NavigationView menu默認icon和title會隨著菜單狀態改變而改變,選擇某個菜單后再次打開側邊菜單后會發現該菜單的icon和title會變成應用的主顏色,其他菜單項仍然為黑色。 如果想關閉系統默認的這個效果,有兩種方式: 1. XML布局文件…