有的时候下载链接中并不含有要下载的文件名,有的会下载链家会重定向到其他链接进行下载。这个时候我们无法直接获取要下载对象的文件名。下载我们就通过实际请求的链接来获取文件名。当然这个方法还存在问题,这种只是针对重定向的文件能够获取。针对不是重定向的链接存在局限性。
import urllib
import os
def getFile(url, passName=None):
if passName:
fileName = passName
urllib.urlretrieve(attachURL, fileName)
print fileName
else:
r = urllib.urlopen(url)
if r.info().has_key('Content-Disposition'):
fileName = r.info()['Content-Disposition'].split('filename=')[1]
fileName = fileName.replace('"', '').replace("'", "")
elif r.url != url:
# if we were redirected, the real file name we take from the final URL
from os.path import basename
from urlparse import urlsplit
fileName = basename(urlsplit(r.url)[2])
else:
fileName = os.path.basename(url)
print fileName
print r.url
getFile("http://ota.quanwifi.com/firmware/FYX-AP01J_4.2.0_r1505.bin")