Django 上传文件不在 MEDIA_ROOT 路径下导致 SuspiciousOperation 错误

13 投票
1 回答
8188 浏览
提问于 2025-04-16 03:39

我想把文件上传到我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')

我这样做是因为我不想让我上传的文件通过浏览器访问,而我的 MEDIA_ROOT 路径是可以被访问的。

有没有人知道我该如何解决这个错误?

1 个回答

28

是的,确实有办法

根据文档:

比如,下面的代码会把上传的文件存储在/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)

撰写回答