Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2014 12:52:34

Paranoia_Agent
Зарегистрирован: 2014-06-25
Сообщения: 75
Репутация: +  5  -
Профиль   Отправить e-mail  

Как получить вместе с файлом и его название при скачивании по url ?

Всем привет, сразу к делу:

import urllib.request
url='http://tempfile.ru/download/459fc78e4fbcecd4f27666958c04abf0'
name = ???
urllib.request.urlretrieve(url, name)

Если скопировать url сразу в браузер, то он сохранит файл под названием “picture.tar”, а как получить это самое название при скачивании с помощью python?

P.S. Ссылка действительна один день, новую ссылку можно сгенерировать по: http://tempfile.ru/file/3089948

Офлайн

#2 Июль 19, 2014 13:25:41

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Как получить вместе с файлом и его название при скачивании по url ?

Вот содержимое headers:
Accept-Ranges →bytes
Connection →close
Content-Disposition →attachment; filename=“picture.tar”
Content-Length →721920
Content-Type →application/octet-stream
Date →Sat, 19 Jul 2014 10:24:00 GMT
Last-Modified →Mon, 26 Jul 1997 05:00:00 GMT
Server →nginx/0.7.62



Офлайн

#3 Июль 19, 2014 14:25:22

Paranoia_Agent
Зарегистрирован: 2014-06-25
Сообщения: 75
Репутация: +  5  -
Профиль   Отправить e-mail  

Как получить вместе с файлом и его название при скачивании по url ?

Получилось так:

import urllib.request
import cgi
path='/home/user/new/'
url='http://tempfile.ru/download/459fc78e4fbcecd4f27666958c04abf0'
site=urllib.request.urlopen(url)
attachment, params = cgi.parse_header(site.headers.get('Content-Disposition', ''))
filename = params['filename']
urllib.request.urlretrieve(url, path+filename)

Офлайн

#4 Июль 19, 2014 20:59:50

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как получить вместе с файлом и его название при скачивании по url ?

Если в имени будет кирилица (или т.п.) то возможно придется декодировать, см. http://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version