Django上传文件不在MEDIA_ROOT路径中给我SuspiciciousOperation错误

问题描述:

我想将文件上传到仍在我的django项目中,但在我的MEDIA_ROOT路径中的路径。Django上传文件不在MEDIA_ROOT路径中给我SuspiciciousOperation错误

当我尝试这样做时,我得到一个SuspiciousOperation错误。

下面是在我的设置文件中定义的路径:

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'static_serve') 
UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'uploads') 

我这样做,因为我不希望我上传是通过浏览器访问的文件和我的MEDIA_ROOT路径。

有没有人有任何想法如何解决(修复)这个错误。

+0

您可以禁止网络服务器公开提供某个导演ies在MEDIA_ROOT下。 – 2010-09-02 23:20:31

+0

我现在正在使用测试服务器...在Windows XP上。我也不确定如何做到这一点。 – imns 2010-09-02 23:25:43

+0

我不认为开发服务器可以,但任何生产就绪的Web服务器都应该能够限制对这些文件的访问。例如,[这里](http://httpd.apache.org/docs/2.0/misc/security_tips.html#protectserverfiles)是Apache的做法。 – 2010-09-02 23:29:40

there is a way

从文档:

例如,将 商店上传的文件下 /媒体/照片,无论你的 MEDIA_ROOT设置的下面的代码是:

from django.db import models 
from django.core.files.storage import FileSystemStorage 

fs = FileSystemStorage(location='/media/photos') 

class Car(models.Model): 
    ... 
    photo = models.ImageField(storage=fs) 
+1

+1这值得了解。太糟糕OP将不会投票这个最好的答案。 – hughdbrown 2010-09-22 21:28:25

+0

我有同样的问题。是否你(和文档)说,我得到以下例外'FileFields需要一个“upload_to”属性.'我粘贴整个块在这里:http://dpaste.com/hold/533577/任何想法? – xpanta 2011-04-19 14:22:07

+1

只需将upload_to添加为与位置相同的值即可。 – Tom 2011-08-31 19:28:28