遇到了问题。我正在开发一个用于查看 VKontakte 组的移动客户端。我在帖子的附件中显示链接。如果链接指向网络上的页面,我需要在设备的标准浏览器中打开这样的链接,或者如果链接指向文件,我需要使用我的应用程序开始下载。我不认为这可能是一个真正的问题,因为,例如,该模块urlparse被证明是完全无用的:
print(urlparse('http://play.google.com/store/details?id=org.name.old&rdid=org.name.old).path)
>>> play.google.com/store/details
这个链接:
print(urlparse('http://page/file.txt).path)
>>> /file.txt
在这里,如何确定链接指向的内容变得完全不清楚http://play.google.com/store/details?id=org.name.old&rdid=org.name.old。很明显,例如,模块os在这里也无济于事。
是否真的有必要使用os.path.splitext,从链接中提取扩展名(如果存在),并检查该扩展名是否属于已知文件类型?
只能拿到
http响应头,看content-type. 如果它包含text/html,那么它就是一个网页。例子:
要根据请求处理重定向,您需要指定
allow_redirects=True(默认情况下,该功能head是禁用的):如果Content-Disposition http 标头显示附件,则将链接下载为文件(可以指定标头中的名称)。根据此标头rfc 6266 ,可以内联显示或下载相同的内容:
在 Python 上:
有必要确定链接是否以代码中指定的某个特定扩展名结束。
如果以 结尾,则下载。
否则,它会在标准浏览器中打开页面。