2017-01-24 17 views
0

Когда пользователь нажимает кнопку загрузки в пользовательском интерфейсе, я хочу загрузить файл, который находится на общем ресурсе. Он отлично работает с данными < 1gb. но большие файлы, он терпит неудачу. Это не дает никакой ошибки, но я вижу, что счетчик для загрузки в нижнем левом углу хрома останавливается после 1gb. Вот мой питон кодpython and angularjs file загрузить

filename = os.path.basename(pathToFile) 
     chunk_size = 8192 
     content_type = mime.from_file(pathToFile) 
     response = StreamingHttpResponse(FileWrapper(open(pathToFile), chunk_size), 
             content_type=content_type) 
     response['Content-Length'] = os.path.getsize(pathToFile) 
     response['Content-Disposition'] = 'attachment; filename="%s"' % filename 

Вот код Javascript

$scope.downloadFile = function(path) { 
     return "/download_file?file=" + encodeURIComponent("somePath"); 

Любые предложения?

+0

Возникает ли проблема в других браузерах? –

+0

Попробуйте загрузить файл с помощью 'curl',' wget' или аналогичного инструмента командной строки. Тогда вы сможете увидеть, в чем проблема, например. ваша файловая система может иметь максимальный размер файла 1 ГБ. – mhawke

+0

Да, в других браузерах тоже такая же проблема. Мы используем uwsgi и nginx. Я думаю, что у меня есть конфигурация по умолчанию, которая позволяет использовать только 1 ГБ. Я попытался добавить nginx conf с proxy_max_temp_file_size 5120m; Не сделал трюк. – user2406718

ответ

0

Я решил проблему, добавив следующие параметры в файл nginx.conf.

location /<Your download api path> {   
     uwsgi_pass django; 
     uwsgi_read_timeout 300s; 

     uwsgi_buffering off; 
     proxy_set_header Connection ''; 
     proxy_http_version 1.1; 
     chunked_transfer_encoding on; 
     proxy_cache off; 

    }