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

imn*_*mns 13 python django django-uploads

我想将文件上传到仍在我的django项目中的MEDIA_ROOT路径,但是在我的路径中.

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

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

MEDIA_ROOT = os.path.join(os.path.dirname( __file__ ), 'static_serve')
UPLOAD_DIR = os.path.join(os.path.dirname( __file__ ), 'uploads')
Run Code Online (Sandbox Code Playgroud)

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

有没有人知道我如何解决(修复)此错误.

Dav*_*cic 27

是的有一种方法:

来自docs:

例如,以下代码会将上传的文件存储在/ media/photos下,无论您的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)
Run Code Online (Sandbox Code Playgroud)

  • @汤姆,你错了.location属性是绝对路径,而upload_to是相对路径,它被附加到MEDIA_ROOT. (3认同)
  • +1这是值得了解的.太糟糕的OP不会投票给这个最好的答案. (2认同)