none
获取 aspx 网站 文件原名 RRS feed

  • 问题

  •             string _url = @"http://www.site.com/getImg.aspx?id=123";
                string _filename = "how to get filename from site";
                //尝试 _HttpWebResponse.Headers["Content-Disposition"],抓取得到的是空值

    2013年4月14日 9:24

全部回复

  • 请给出完整的代码——你用WebRequest和WebResponse来做的吗?

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats

    2013年4月14日 10:24
    版主
  •             HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(pUrl);
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                for (int i = 0; i < myHttpWebResponse.Headers.Count; ++i)
                    Console.WriteLine("Header Name:{0}, Value :{1}", myHttpWebResponse.Headers.Keys[i], myHttpWebResponse.Headers[i]);
                myHttpWebResponse.Close(); 

    输出的信息如下,没有 Content-Disposition :
    Header Name:Cache-Control, Value :private

    Header Name:Content-Type, Value :image/gif

    Header Name:Set-Cookie, Value :.ASPXANONYMOUS=iJOG6vBvzgEkAAAAM2E5YmZmN2ItZTk2OC00MjBjLWJmZjgtYzQ0YTliODcyYzdhTewXLP6UnKbwfD78_r4XugAAAAA1; expires=Sun, 23-Jun-2013 09:06:15 GMT; path=/; HttpOnly,ASP.NET_SessionId=o5uzge45or3hbmuzoo4d0x55; path=/; HttpOnly,AD_RS_COOKIE=20080916; expires=Mon, 15-Apr-2013 22:26:16 GMT; path=/;

    Header Name:Server, Value :Microsoft-IIS/7.5

    Header Name:X-AspNet-Version, Value :2.0.50727

    Header Name:X-Powered-By, Value :ASP.NET

    Header Name:Date, Value :Sun, 14 Apr 2013 22:26:15 GMT

    Header Name:Content-Length, Value :1870

    2013年4月14日 22:28
  •             using (WebClient client = new WebClient())
                {
                    using (Stream rawStream = client.OpenRead(pUrl))
                    {
                        string contentDisposition = client.ResponseHeaders["content-disposition"];
                        if (!string.IsNullOrEmpty(contentDisposition))
                        {
                            string lookFor = "filename=";
                            int index = contentDisposition.IndexOf(lookFor, StringComparison.CurrentCultureIgnoreCase);
                            if (index >= 0)
                            {
                                string fileName = contentDisposition.Substring(index + lookFor.Length);
                                Console.WriteLine(fileName);
                            }
                        }
                        else
                            Console.WriteLine("null");
                    }
                }
    得到的结果也是空值
    2013年4月14日 22:59
  • 有很多时候不一定能拿到这个值。

    最简单的办法是使用webclient的downloadfile方法,直接下载文件。

    有些有扩展名,有些没有,没有的需要你通过页面其他条件来判断了。


    family as water

    2013年4月15日 1:42
  • 采用 webclient的downloadfile方法,就无法获取 原文件名了。

    2013年4月15日 2:42
  • 一般都是要重命名的

    原来名称不规范,或者可能存在重名情况。


    family as water

    2013年4月16日 1:43
  • 很感谢您的回复!但是答非所问,对不起。

    2013年4月16日 2:06