2015-05-18 37 views
3

這是一個奇怪的問題。我正在構建一個基本應用,讓用戶上傳視頻並將其回放。簡單。當用戶上傳文件時,其鏈接存儲在mysql中,文件本身存儲在文件系統的web_app/media/videos /中。無法訪問MEDIA文件夾中的視頻文件

在settings.py:

STATIC_URL = '/static/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'web_app/media') 
MEDIA_URL = '/media/' 

我的相關目錄結構:

project/web_app/static/ 
project/web_app/media/ 

上傳工作正常,然後這兩個數據庫條目,如預期的視頻文件的土地。問題是我無法通過視頻鏈接訪問該文件。現在,在我看來模板,我有這樣的:

{% block body %} 
    <div><video src="{{ MEDIA_URL }}{{ path_to_video }}" width=640 height=360 controls></video></div> 
    <div><video src="/static/videos/2015/05/18/vid1.mp4" width=640 height=360 controls></video></div> 
{% endblock body %} 

第一個div顯然我想要使用,第二個是有調試 - 你就會明白爲什麼在第二。此模板導致以下html:

<div><video src="/media/videos/2015/05/18/vid1.mp4" width=640 height=360 controls></video></div> 
<div><video src="/static/videos/2015/05/18/vid1.mp4" width=640 height=360 controls></video></div> 

再次如預期。這是事情:第一個鏈接不起作用,說它找不到該文件。但是,如果我手動將「videos/2015/etc ...」複製到/ static文件夾中,則第二個鏈接按預期工作。這裏是怎麼回事?是否存在媒體文件夾的許可問題?

I don 。「知道它是否有差別,但是這是在Windows ...謝謝

+0

你剛使用開發服務器還是你在前面使用apache/nginx? – reptilicus

+0

通過pycharm開發服務器。 – Gadzooks34

+0

可以將權限(暫時)更改爲777或相當於檢查 – reptilicus

回答

0

這是有人用的Django 開發服務器遇到一個問題,這就是我在我的urls.py

from django.conf import settings 
from django.conf.urls.static import static 

# ... 

if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # pragma: nocover 

現場/製作這應該由Web服務器處理。

(該#pragma註釋是對coverage包。)

上面被覆蓋在Django documentation: Serving files uploaded by a user during development。另見Serving static files during development

+0

等效的窗口!但我不明白。這個入口在做什麼? – Gadzooks34

+0

我很高興它做到了。我提供了文檔鏈接。雖然沒有太多細節。 Django開發服務器不提供這些文件。 – Wtower

+0

需要一個大的免責聲明:這僅適用於**開發**。 –