2010-09-02 18 views
13

Tôi muốn tải tệp lên đường dẫn vẫn còn trong dự án django của tôi, nhưng trong đường dẫn MEDIA_ROOT của tôi.Tệp tải lên Django không có trong đường dẫn MEDIA_ROOT đang cấp cho tôi Lỗi đáng ngờ Lỗi hoạt động

Khi tôi cố gắng làm điều này, tôi nhận được lỗi SuspiciousOperation.

Dưới đây là những con đường như đã xác định trong tập tin thiết lập của tôi:

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

tôi đang làm điều này bởi vì tôi không muốn các tập tin tôi tải lên có thể truy cập thông qua trình duyệt và con đường MEDIA_ROOT của tôi là.

Có ai có ý tưởng nào về cách khắc phục lỗi này không.

+0

Bạn có thể cấm máy chủ web phân phối công khai một số giám đốc dưới MEDIA_ROOT. –

+0

Tôi đang sử dụng máy chủ thử nghiệm ngay bây giờ ... trên Windows XP. Tôi cũng không chắc chắn làm thế nào để làm điều đó. – imns

+0

Tôi không nghĩ máy chủ phát triển có thể, nhưng bất kỳ máy chủ web sẵn sàng sản xuất nào cũng có thể giới hạn quyền truy cập vào các tệp. [Ở đây] (http://httpd.apache.org/docs/2.0/misc/security_tips.html#protectserverfiles) là cách Apache thực hiện nó chẳng hạn. –

Trả lời

27

there is a way:

Từ tài liệu:

Ví dụ, đoạn mã sau cửa hàng sẽ tải lên các tập tin dưới /media/hình ảnh bất kể những gì thiết lập MEDIA_ROOT của bạn là:

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 Điều này đáng để biết. OP quá tệ sẽ không bỏ phiếu cho câu trả lời hay nhất này. – hughdbrown

+0

Tôi gặp vấn đề tương tự. Đã làm những gì bạn (và các tài liệu) nói và tôi nhận được ngoại lệ sau đây 'FileFields yêu cầu một" upload_to "thuộc tính.' Tôi dán toàn bộ khối ở đây: http://dpaste.com/hold/533577/ Bất kỳ ý tưởng? – xpanta

+1

Chỉ cần thêm upload_to có cùng giá trị với vị trí. – Tom

Các vấn đề liên quan