2010-09-02 9 views
13

Quiero subir archivos a una ruta que todavía está en mi proyecto django, pero en mi ruta MEDIA_ROOT.El archivo de carga Django que no está en la ruta MEDIA_ROOT me está dando el error SuspiciousOperation

Cuando intento hacer esto, aparece un error SuspiciousOperation.

Éstos son los caminos como se ha definido en mi archivo de configuración:

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

estoy haciendo esto porque no quiero que los archivos Estoy subiendo a ser accesible a través del navegador y mi camino es MEDIA_ROOT.

¿Alguien tiene alguna idea de cómo soluciono este error?

+0

Puede prohibir que el servidor web sirva públicamente a cierto director ies bajo MEDIA_ROOT. –

+0

Estoy usando el servidor de prueba ahora ... en Windows XP. Tampoco estoy muy seguro de cómo hacer eso. – imns

+0

No creo que el servidor de desarrollo pueda, pero cualquier servidor web listo para producción debería poder limitar el acceso a los archivos. [Aquí] (http://httpd.apache.org/docs/2.0/misc/security_tips.html#protectserverfiles) es la forma Apache de hacerlo, por ejemplo. –

Respuesta

27

there is a way:

a partir de documentos:

Por ejemplo, el siguiente código tienda subido archivos bajo /media/fotos, independientemente de cuál sea su configuración MEDIA_ROOT es:

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 Esto vale la pena saberlo. Lástima que OP no vote esta la mejor respuesta. – hughdbrown

+0

Tuve el mismo problema. Hice lo que usted (y los documentos) dijeron y recibo la siguiente excepción: 'FileFields requiere un atributo 'upload_to'. Pegué todo el bloque aquí: http://dpaste.com/hold/533577/ ¿Alguna idea? – xpanta

+1

Simplemente agregue upload_to como el mismo valor que la ubicación. – Tom

Cuestiones relacionadas