我正在製作一個模型,其中我有一個FileField
。我想將文件內容存儲在數據庫列中,而不是文件路徑。有什麼建議麼?在DB中存儲文件內容
10
A
回答
-2
這是很容易
只是在此改變保存方法在管理
filecontent=form.cleaned_data.get('upload_file')
data =filecontent.read()
from django.db import connection
cursor = connection.cursor()
cursor.execute("update filecontent set filecontent=(%s) where id=(%s)",[data,obj.id])
connection.connection.commit()
cursor.close()
connection.close()
這將filecontent存儲在表filecontent的數據庫列filecontent
1
那麼,簡單地將它存儲在二進制列中呢?然後您可以存儲字節的集合。如果文件名對您也很重要,您可以將其存儲在其他名稱列中。
21
無視反對者。如果您想完全控制您的內容,請將這些文件放在數據庫的blob字段中。我通常也將文件名保存在一個單獨的字段中,這樣我就可以根據需要重新構建文件(這樣您就可以保留擴展名,這在大多數操作系統中將其與文件類型綁定)。
確保將實際的斑點數據存儲在一個單獨的表格中,只通過一個ID連接到您的文件名/額外信息表...這樣,當處理與文件相關的任何信息時,不會犧牲任何性能除了內容本身。
反對者沒有意識到的是,數據庫只是一個非常優化的文件系統形式。字節是字節,磁盤扇區是磁盤扇區。數據庫在組織和搜索這些字節方面比文件系統要好得多。更不用說,數據庫實現比大多數文件系統更嚴格的安全性,並且更好地維護(備份,支持人員等)。
9
我知道這是一個老問題,但有從那時起寫了一些很好的代碼來允許這個選項。特別地,請參閱django-database-files,它將使用Django的存儲API使所有FileField和ImageFields將其內容存儲在數據庫中。還有一個fork在文件系統本地緩存文件,以克服使用數據庫的最大警告,即延遲。
相關問題
- 1. 在不存儲文件的情況下搜索文件內容db
- 2. 在Postgres-DB中存儲/讀取文件
- 3. 在android中存儲db文件
- 4. 哪個更好?在DB中存儲文件或在DB中存儲其路徑?
- 5. 如何讀取文件內容並將其存儲在mongo db中
- 6. 在類中存儲內存內容 - C++
- 7. 在Android上清除內部存儲中的文件內容
- 8. Rails文件存儲在哪裏? db/development.sqlite3
- 9. Lucene:如何存儲文件內容?
- 10. 存儲INI文件在內存中
- 11. 將文件存儲在內存中
- 12. 存儲在DB
- 13. 存儲在DB
- 14. NoSQL存儲用於在內存中存儲圖像的內容?
- 15. 在C++中將文件內容存儲到變量中
- 16. 存儲內容
- 17. 專用存儲文件夾在Android中存儲付費應用特定內容?
- 18. 文件將內容存儲在一行中,但是如何逐行存儲它。
- 19. 在db中存儲標記文本?
- 20. php:獲取文件內容和存儲在特定文件夾中的文件
- 21. 讀取文本文件,其內容在unoredered_map存儲在C++
- 22. 從內部存儲器中讀取JSON文件的內容
- 23. 我如何存儲10秒內文件的內容在Perl
- 24. 從xml文件讀取內容並存儲在數組中
- 25. 在外部存儲的文件中寫入虛擬內容android
- 26. 如何在內容提供商中存儲文件
- 27. 提取jar內容並存儲在目標文件夾中
- 28. 在二維數組中存儲的內容文件LUA
- 29. 將文件內容(二進制數據)存儲在plone.app.registry中
- 30. 將.load html文件的內容存儲在變量中
你爲什麼想這樣做?文件屬於文件系統。 – 2009-07-03 12:39:10
您希望在數據庫中存儲多少二進制數據?與存儲數千個大型二進制文件相比,在數據庫中存儲少量二進制對象有很大的區別。 – Kane 2009-07-04 04:23:05
是的。這個決定的基本原理是什麼?爲什麼不把它們存儲在FS上? – exhuma 2009-09-03 09:20:11