Как ограничить размер загружаемого файла apache + django - PullRequest
0 голосов
/ 24 мая 2010

Как ограничить размер загружаемого файла. Я использую Django 1.1 с Apache. Могу ли я использовать apache для этого и показать страницу с ошибкой html, если, скажем, размер больше 100 МБ.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 24 мая 2010

Я имею в виду перед загрузкой файла

На стороне клиента это невозможно ...

Я предлагаю написать пользовательских обработчиков загрузки и переопределить receive_data_chunk.

Пример: QuotaUploadHandler

2 голосов
/ 15 января 2014

Вы можете сделать это в javascript в самых последних браузерах, используя File API: http://www.w3.org/TR/FileAPI/

Например (используя jquery):

var TYPES = ['image/jpeg', 'image/jpg', 'image.png'];

var file = $('#my_file_input')[0].files[0];
var size = file.size || file.fileSize;
var type = file.type;

if (size > MAX_BYTES) {
  alert('Error: file too large');

} else if (TYPES.indexOf(type) < 0) {
  alert('Error: file not a JPG or PNG');

} else {
  // proceed with file upload

}

Нет необходимости в Java или Flash. Конечно, вам все равно понадобится какая-то проверка на сервере для пользователей, которые отключают JavaScript.

0 голосов
/ 24 мая 2010

Если вы хотите получить размер файла до начала загрузки, вам потребуется использовать Flash или Java-апплет.

Написание собственного обработчика загрузки - лучший подход. Я думаю, что-то вроде следующего будет работать (не проверено). Прекращает загрузку как можно раньше.

from django.conf import settings
from django.core.files.uploadhandler import FileUploadHandler, StopUpload

class MaxSizeUploadHandler(FileUploadHandler):
    """
    This test upload handler terminates the connection for 
    files bigger than settings.MAX_UPLOAD_SIZE
    """

    def __init__(self, request=None):
        super(MaxSizeUploadHandler, self).__init__(request)


    def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
        if content_length > settings.MAX_UPLOAD_SIZE:
            raise StopUpload(connection_reset=True)
0 голосов
/ 24 мая 2010

apache имеет настройки сервера для максимального размера файла .. (также не забывайте, максимальный размер сообщения). Я не верю, что apache может показать страницу с ошибкой самостоятельно, вы, вероятно, можете использовать python для этого. к сожалению, я ничего не знаю о Python (пока), поэтому я не могу помочь вам в этом. Я знаю, что php может сделать это легко, поэтому я уверен, что есть метод для python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...