2016-04-20 2 views
2

Я пытаюсь загрузить файл с другого сервера, я хочу сохранить его на локальном сервере и создать ссылку для загрузки, чтобы пользователь мог загрузить его с нашего сайта.django, request скачать файл

Я могу скачать его с запросами, он отлично работает, но у меня нет идеи, как сохранить файл в каталоге статических файлов и создать для него url. Направьте меня пожалуйста

import requests 
def download_file(url): 
    local_filename = url.split('/')[-1] 
    r = requests.get(url, stream=True) 
    with open(local_filename, 'wb') as f: 
    for chunk in r.iter_content(chunk_size=1024): 
     if chunk: # filter out keep-alive new chunks 
      f.write(chunk) 
return local_filename 

ответ

0

Вы должны сохранить сгенерированный и загруженный пользователем файл в папку MEDIA_ROOT вместо STATIC_ROOT. Они будут обслуживаться по номеру localhost:8000/media/test.txt с настройками по умолчанию. Итак, вы должны сделать что-то вроде return redirect(settings.MEDIA_URL + '/' + local_filename) в своей функции.

Просьба отметить this сообщение в блоге для получения дополнительной информации.

0

Возможно, вы можете использовать FileField. Вы можете создать модель для этого типа файла с внешним ключом до User. Это поле сохраняет файл на ваш Storage и генерирует URL-адрес, вызывая метод url(). https://docs.djangoproject.com/en/1.9/ref/models/fields/#filefield

Смежные вопросы