日期:2014-05-17  浏览次数:20438 次

关于文件下载的一个问题。。。
测试做的一个文件上传和下载。。

上传的时候我是根据当前时间来命名保存的文件(保存在 XML 文件中)。。问题来了。。我点下载的时候文件名就是那个我用时间命名的文件名了。。。。。

贴代码。

保存文件的 XML 
XML code

<?xml version="1.0" encoding="utf-8"?>
<Files>
  <!--原始文件名-->
  <File name="C#+经典案例+不错非常不错">
    <!--上传成功之后保存的服务器端的文件名-->
    <realName>201005212023.rar</realName>
  </File>
</Files>



Action
C# code

//
        // GET: /FileInfo/

        public ActionResult Index()
        {
            XDocument xd = XDocument.Load(Server.MapPath("/Sources/FileInfo.xml"));

            //List<XNode> xl = xd.Nodes().ToList();
            List<XElement> files = xd.Root.Elements("File").ToList();
            ViewData["Files"] = files;
            return View();
        }



ASP 页面
HTML code

<body>
    <%
        //获取所有文件借点
        List<XElement> Files = ViewData["Files"] as List<XElement>;
    %>
    <div>
        <table>
            <tr>
                <td align="left">
                    文件名
                </td>
                <td align="center">
                    操作
                </td>
            </tr>
            <%
                //遍历所有文件信息节点
                foreach (XElement x in Files)
                {  
            %><tr>
                <td align="left">
                    <span>
                        <%=x.Attribute("name").Value %></span>
                </td>
                <td align="center">
                    <a href="/Sources/<%=x.Value %>">点击下载</a>
                </td>
            </tr>
            <%
                }
            %>
        </table>
    </div>
</body>



之前测试的如果 a 标签的 href 中出现中文就报错了。。。
所以改成这种方法。。可是现在又在纠结怎么在下载的时候保存为原始文件名了。。。