请教:一个链接中,如何获得其真正的文件名?比如某些链接实际上是网页的链接,而一些链接是链接的下载文件。在做下载程序的时候,要如何才能判断出这个链接是链接的网页还是下载文件呢?又怎样才能得到他们的文件名?就像右键另存为时,文件名里自动出现其真正的文件名。谢谢!

解决方案 »

  1.   

    <script language="javascript">
    function AddLink(Url,Info,Location,strCID,strStatUrl,strCookie)
    {
    if (Url != "")
    {
    if (Info == "")
    {
    Info = "unknown";
    }
    var ThunderAgent = new ActiveXObject("ThunderAgent.Agent");

    if (strCID != "")
    {
    if (strStatUrl != "")
    {

    ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1,  strCookie, strCID, strStatUrl, 1, "", -1);
    }
    else
    {
    ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1,  strCookie, strCID, "", 1, "", -1);
    }
    }
    else
    {
    ThunderAgent.AddTask5(Url, "", "", Info, Location,-1,0,-1,strCookie,"","", 1, "", -1);
    }
    ThunderAgent.CommitTasks2(1);
    }
    }function OnContextMenu()
    {
    var srcEvent = external.menuArguments.event;
    var EventElement;

    if(typeof(srcEvent.clientX) == "undefined")
    {
    EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.pointerX, srcEvent.pointerY );
    }
    else
    {
    EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY );
    }

    var strDownloadPage = external.menuArguments.location;
    var theDownloadPage = external.menuArguments.document.getElementById("thunder_down_pageurl");

    if (theDownloadPage != null)
    {
    strDownloadPage = theDownloadPage.value;
    }
    var strStatPage = "";
    var theStatPage = external.menuArguments.document.getElementById("thunder_stat_pageurl");
    if (theStatPage != null)
    {
    strStatPage = theStatPage.value;
    } var strCID = ""
    var theCID = external.menuArguments.document.getElementById("thunder_cid");
    if (theCID != null)
    {
    strCID = theCID.value;
    }
    var srcAnchor; if (srcEvent.type == "MenuExtAnchor")
    { srcAnchor = EventElement; do

    srcAnchor=srcAnchor.parentElement;
    }while(typeof(srcAnchor)=="HTMLAnchorElement");

    AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
    }
    else if (srcEvent.type == "MenuExtImage")
    {
    if (typeof(EventElement) == "HTMLAreaElement")
    {
    AddLink(EventElement.href,EventElement.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
    }
    else 
    {
    var srcImage = EventElement;
    var srcAnchor = srcImage.parentElement;
    do

    srcAnchor=srcAnchor.parentElement;
    if (typeof(srcAnchor) == "undefined")
    {
    AddLink(srcImage.href,srcImage.Alt,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
    return;
    }
    }while(typeof(srcAnchor) == "HTMLAnchorElement");
    AddLink(srcAnchor.href,srcImage.Alt,strDownloadPage, strCID, strStatPage);
    }
    }
    else if (srcEvent.type == "MenuExtUnknown")
    {
    srcAnchor = EventElement;
    if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
        {
            AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
        }
        else
        {
            while(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() != "a")
            {
                srcAnchor = srcAnchor.parentElement;
                if(srcAnchor != null && srcAnchor.tagName != null && srcAnchor.tagName.toLowerCase() == "a")
                {
                    AddLink(srcAnchor.href,srcAnchor.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
                    return;
                }
            }

            if(EventElement != null && EventElement.tagName != null)
            {
                AddLink(EventElement.href,EventElement.innerText,strDownloadPage, strCID, strStatPage,external.menuArguments.document.cookie);
            }
            else
            {
                alert("无法识别的超级链接信息");
            }
        }
    }
    else
    {

    }
    }
    OnContextMenu();</script>
      

  2.   

    下载工具和ie差不多,还是要访问原来的连接,例如:http://xxx.sss/download.do?param=yyyy,人家服务器那边成功执行后,拿到下载的文件,文件名的话和楼上说的一样截出来
      

  3.   

    其实大部分像http://xxx.sss/download.do?param=yyyy这样的网址无所谓文件名的,你自己搞个规则就是了