《asp.net从入门到精通》做的下载文件遇到问题
发表在ASP.NET图书答疑 2010-07-05
是否精华
版块置顶:
我参照《asp.net从入门到精通》做的下载word和Excel文件的一个小程序,本地可以下载也可也使用,可远程下载后,无法打开,提示文件时只读
分享到:
精彩评论 6
桃花仙人
学分:0 LV1
TA的每日心情
开心
2023-05-28 18:54:27
2010-07-05
沙发
下载文件之后,查看其是否为只读,如果是只读去掉只读属性,试试是否好使
liutaoyifan
学分:0 LV1
TA的每日心情
开心
2023-02-06 20:49:23
2010-07-05
板凳
说要检查权限,怎么在服务器端设置呢
桃花仙人
学分:0 LV1
TA的每日心情
开心
2023-05-28 18:54:27
2010-07-06
地板
将文件保存到本地之后打开也出现问题吗?
liutaoyifan
学分:0 LV1
TA的每日心情
开心
2023-02-06 20:49:23
2010-07-06
4L
[img src=C:\Documents and Settings\Administrator\桌面/img],改文件时只读,或者您要访问的位置是只读,或者文件所在的服务器没有相应。可是我已经把文件下到桌面上了啊
红尘倒影
学分:0 LV1
2010-07-06
5L
这个问题可能是在下载的过程中出现问题了,现在我给你提供四种下载文件的方法,你可以逐一试试,这样,你还能多掌握几种下载文件的方法,呵呵。
(1)TransmitFile实现下载
         protected void Button1_Click1(object sender, EventArgs e)
        {
           
            string strFileName = "三部闲置设备管理系统操作手册IEMS.ppt";
            Response.ContentType = "application/x-zip-compressed";
            //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
            string filename = BLL.Config.PART_EM_UPLOAD_DOC + strFileName;  
            //BLL.Config.PART_EM_UPLOAD_DOC 为路径   ("D:/EMUploadDoc/")
            Response.AddHeader("Content-Disposition", "attachment;filename=" +Server.UrlPathEncode(strFileName));

           //Server.UrlPathEncode()解决文件名的乱码问题.
            
            Response.TransmitFile(filename);
        }   

(2)WriteFile实现下载
    protected void Button2_Click(object sender, EventArgs e)
    {
       

        string fileName = "asd.txt";//客户端保存的文件名
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }
(3)WriteFile分块下载
    protected void Button3_Click(object sender, EventArgs e)
    {

        string fileName = "aaa.txt";//客户端保存的文件名
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

        if (fileInfo.Exists == true)
        {
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
            byte[] buffer = new byte[ChunkSize];

            Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            Response.Close();
        }
    }

(4)流方式下载
    protected void Button4_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        //以字符流的形式下载文件
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        Response.ContentType = "application/octet-stream";
        //通知浏览器下载文件而不是打开
        Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();

    }
liutaoyifan
学分:0 LV1
TA的每日心情
开心
2023-02-06 20:49:23
2010-07-06
6L
可能是下载方法的事,我用您的分块下载,然后重新把权限设置一下,就好了!非常感谢几位老师的讲解!谢谢,再次表示感谢!
首页上一页 1 下一页尾页 6 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照