zoukankan      html  css  js  c++  java
  • java获取真实的下载地址和下载文件名

    2010-04-14
     
     
    比如有这样一个地址:
    http://www.vckbase.com/tools/downtools.asp?id=209
    用下载工具打开时,能够知道其真实的下载地址和下载名称
    请问用java怎么能获取到真实的下载地址和名称呢?
    我试了使用java.net.HttpURLConnection类,获取到了以下文件头信息
    ============getHeaderField()===============
    openConnection.getContentLength()=3383
    Date=Wed, 14 Apr 2010 08:39:00 GMT
    Content-Length=3383
    Expires=null
    Last-Modified=null
    Accept-Ranges=null
    Connection=null
    Content-Type=text/html
    Server=Microsoft-IIS/6.0
    Cache-Control=private
    ETag=null
    Location=null
    openConnection.getURL().getFile()=/tools/viewtools.asp?id=209
    openConnection.getURL().getQuery()=id=209
    openConnection.getURL().getUserInfo()=null
    openConnection.getURL().getPath()=/tools/viewtools.asp
    openConnection.getURL().getProtocol()=http
    openConnection.getURL().getAuthority()=www.vckbase.com
    openConnection.getURL().getRef()=null
    openConnection.getURL().toExternalForm()=http://www.vckbase.com/tools/viewtools.asp?id=209
    ===========================================
    输出的信息中都没有真实的下载地址,请问如何能获得到呢?那些下载工具(flashget、迅雷等)又是如何做到的呢?
     
     
    ----------------------------
    LZ举这个例子http://www.vckbase.com/tools/viewtools.asp?id=209 我用了浏览器打开是个网页。如果真有下载。我的迅雷会弹出下载对话框的。针对你所说的用java解析下载文件地址和文件名。看这个地址:http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/%E7%94%B5%E5%BD%B1%E5%8F%91%E8%A1%8C%E7%BD%91.City.Under.Siege.2010.DVDSCR.....avi?k=57643 
    用URLDecoder这个类来解析下载链接就会得到:http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/电影发行网.City.Under.Siege.2010.DVDSCR.....avi?k=57643
    这里的k=57643就应该是服务器里对应的影片名《周星驰莫少聪经典大片《龙凤茶楼》DVD中字.RMVB》
    这就像我们删除WEB程序的一条数据时。看到的只是http://fd.ds.w/wef?id=1 而实际删除的是id=1所对应的数据迅雷里面的下载链接是将下载路径通过某种编码方式编码的。我们一般看到的只是一连串的字符。 
    你点击用迅雷下载的文件右击其属性就会看到起真实的下载链接和文件名。
    获取文件名:添加常用文件的扩展名到一个数组中。通过文件扩展名来匹配连接。再截取匹配扩展名前面的第一个"."和"/"之间的字符串就是文件名。
     
    至于迅雷等这些下载软件是怎么知道下载地址和下载文件名。我想只需将网络资源数据库与迅雷服务器之间有联结就可以获取。只是我的个人想法,希望能帮到你。
     
    --------------------------
    这是URLDecoder的用法:
    String fileRealPath = URLDecoder.decode("http://41.dc.ftn.qq.com/ftn_handler/741dd3c731a10fb49152e35da5ded5c32dab9907ef047317d91110099c32042bc40c20588a80612d45c01d5cd92588abe9b520e05d45838b61642af532b31cb2/%E7%94%B5%E5%BD%B1%E5%8F%91%E8%A1%8C%E7%BD%91.City.Under.Siege.2010.DVDSCR.....avi?k=57643","UTF-8"); 
    System.out.println(fileRealPath);
  • 相关阅读:
    Java之基础(1)
    Java之架构(0)
    Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)
    Android Exception 10(server)' ~ Channel is unrecoverably broken and will be disposed!)
    IOS Exception 1(libc++abi.dylib: terminating with uncaught exception of type NSException)
    Android Exception 9(requestFeature() must be called before adding content)
    Android Exception 8(Couldn't read row 0, col -1 from CursorWindow)
    简洁的BP及RBF神经网络代码
    Android实现一键获取课程成绩dome
    hdu 5371 Hotaru's problem【manacher】
  • 原文地址:https://www.cnblogs.com/huapox/p/3516339.html
Copyright © 2011-2022 走看看