Search code examples
pythondjangodjango-uploads

Django uploading file not in MEDIA_ROOT path is giving me SuspiciousOperation error


I want to upload files to a path that is still in my django project, but in my MEDIA_ROOT path.

When I try to do this I get a SuspiciousOperation error.

Here are the paths as defined in my settings file:

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

I'm doing this because I don't want the files I am uploading to be accessible via the browser and my MEDIA_ROOT path is.

Does anyone have any idea how I get around (fix) this error.


Solution

  • Yes there is a way:

    From docs:

    For example, the following code will store uploaded files under /media/photos regardless of what your MEDIA_ROOT setting is:

    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)