Найти - Пользователи
Полная версия: Как получить вместе с файлом и его название при скачивании по url ?
Начало » Python для новичков » Как получить вместе с файлом и его название при скачивании по url ?
1
Paranoia_Agent
Всем привет, сразу к делу:

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
Lexander
Вот содержимое 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
Paranoia_Agent
Получилось так:

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)
o7412369815963
Если в имени будет кирилица (или т.п.) то возможно придется декодировать, см. http://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB