Как разрешить загрузку больших файлов на Django

У меня есть сайт www.theraplounge.co, который позволяет пользователям загружать видео. Проблема в том, что наши ограничения на размер файлов слишком малы. Как я могу увеличить размер файла, который пользователи могут загружать через мое поле Forms.py FileField? Кстати, в настоящее время я использую Amazon S3.

Вы должны иметь возможность настроить его через DATA_UPLOAD_MAX_MEMORY_SIZE или/и FILE_UPLOAD_MAX_MEMORY_SIZE атрибуты настройки (помните, что вы должны указать значение в байтах).

Проверить:

https://docs.djangoproject.com/en/4.0/ref/settings/#std-setting-DATA_UPLOAD_MAX_MEMORY_SIZE

https://docs.djangoproject.com/en/4.0/ref/settings/#std-setting-FILE_UPLOAD_MAX_MEMORY_SIZE

Проблема заключается в 30-секундном таймауте heroku, так как я обнаружил, что большие файлы загружаются на сервере разработки, но не на рабочем сервере. Решением может быть загрузка файлов во внешнем интерфейсе с помощью javascript, так как это не загружает браузер. В настоящее время я пытаюсь использовать Javascript AWS SDK для загрузки видеофайлов во внешнем интерфейсе. Я получил код для работы с маленькими файлами размером менее 30 МБ, но я столкнулся с проблемой загрузки больших файлов. Ниже я разместил рабочий код Javascript AWS SDK:

    <div>
    <input type="file" id="fileUpload">
</div>

<div>
<button onclick="s3upload()">Submit</button>
</div>

    <script type="text/javascript">

  function s3upload() { 
    AWS.config.region = 'us-east-1'; // Region
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        IdentityPoolId: 'MY-COGNITO-CREDITIONS',
    });

    var files = document.getElementById('fileUpload').files;
    if (files) 
    {
        var file = files[0];
        var fileName = file.name;
        var fileUrl = 'https://theraplounge.s3.amazonaws.com/' + fileName;

        var s3 = new AWS.S3({apiVersion: '2006-03-01'}); 

        var params = {
            Bucket: 'MY-BUCKET-NAME',
            Key: fileName,
            Body: file,
        };

        var s3 = new AWS.S3({apiVersion: '2006-03-01'});  
        var options = {partSize: 5 * 1024 * 1024, queueSize: 1};

   
        s3.upload(params, options, function(err, data) {
                if(err) {
                    alert('error');
                } else{
                alert('uploaded suceessfully')
                };
        });
        console.log(s3)

    }
  };
</script>

Это правильный подход, так как он не загружает браузер вообще, но я не могу заставить его загружать большие файлы. Как только я найду рабочий Javascript-код для загрузки больших файлов, я обновлю этот ответ.

Вернуться на верх