• HttpPostedFile类的使用方法


    HttpPostedFile注意事项:

    (1)    HttpPostedFile提供对客户端已上载的单独文件的访问。

    (2)    对于客户端已上载的文件,最好先保存到服务器,再访问;而不是直接访问。

    (3)     HttpPostedFile file = Request.Files[0]; 变量file只是对文件的引用,对file的任何操作都直接影响到已经上载的文件。

    (4)  使用StreamReader 读取文件后,要调用Close方法关闭文件流,否则SaveAs相同文件名时,提示文件被占用。

     

    下面通过两种方式访问已经上载的文件。

     

    一、先保存到服务器,再访问。

     

    1,新建一个test.aspx页面,前台代码如下:

     

     

     

     

     

    复制代码
    <form runat="server"  method="post" enctype="multipart/form-data">
    
     
    
    <asp:FileUpload ID="FileUpload1" runat="server" />
    
     
    
    <asp:Button ID="btnAdd" runat="server" Text="上传" />
    
     
    
    </form>
    复制代码

     

     

    效果图如下:

     

     

    2,后台代码如下:

     

           

    复制代码
     protected void Page_Load(object sender, EventArgs e)
    
            {
    
     
    
                //(0) 判断文件是否存在
    
                if (Request.Files.Count < 1)
    
                {
    
                    return;
    
                }
    
     
    
                SaveToRead();
    
     
    
            
    
             
    
            }
    
     
    
     
    
     
    
     
    
     
    
            // 1,先保存,再读取文件
    
            public void SaveToRead()
    
            {
    
                // (1)获取上传的文件,保存到 应用程序基目录
    
                HttpPostedFile file = Request.Files[0];
    
                string sFileName = System.AppDomain.CurrentDomain.BaseDirectory + "上传文件.txt";
    
                file.SaveAs(sFileName);
    
     
    
                // (2)从服务器上读取文件
    
                StreamReader reader = new StreamReader(sFileName, Encoding.GetEncoding("GB2312"));
    
                string temp = reader.ReadLine();
    
                Response.Write(temp);
    
     
    
                // (3)关闭文件流
    
                reader.Close();
    
     
    
                // (4)其他函数需要读取时,从新加载文件
    
                reader = new StreamReader(sFileName, Encoding.GetEncoding("GB2312"));
    
                temp = reader.ReadLine();
    
                Response.Write(temp);
    
     
    
            }
    
     
    复制代码

     

     

    3,运行效果图如下:

     

     

     

    二、              直接访问客户端上载的文件

     

    1,  前台代码不变,后台添加如下代码:

          

    复制代码
      protected void Page_Load(object sender, EventArgs e)
    
            {
    
     
    
                //(0) 判断文件是否存在
    
                if (Request.Files.Count < 1)
    
                {
    
                    return;
    
                }
    
     
    
                SaveToRead();
    
     
    
                ReadFile();
    
     
    
             
    
            }
    
     
    
     
    
            //2,直接读取上传的文件
    
            public void ReadFile()
    
            {
    
                //(1)将上传的文件同时赋值给file1和file2
    
                HttpPostedFile file1 = Request.Files[0];
    
                HttpPostedFile file2 = Request.Files[0];
    
     
    
                //(2)判断文件为空的方法
    
                if (file1 == null || file1.ContentLength == 0 || string.IsNullOrEmpty(file1.FileName))
    
                {
    
                    //文件为空,写入日志  
    
                    Response.Write("文件为空");
    
                    return;
    
                }
    
     
    
                //(3)获取文件流的方法
    
                Stream stream = file1.InputStream;
    
                StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("GB2312"));
    
     
    
                //(4) 读取文件内容的方法
    
                string temp = reader.ReadLine();
    
     
    
                //(5) 关闭文件流
    
                reader.Close();
    
     
    
     
    
                //(6) 查看file1和file2的长度均为0
    
                Response.Write("file1的长度:" + file1.ContentLength + "; file2的长度:" + file2.ContentLength);
    
            }
    
     
    复制代码

     

     

    出自 :http://www.cnblogs.com/wang7/p/3913319.html

     

  • 相关阅读:
    moya
    语言是人脑中影像的表述工具
    Ad-hoc--拉丁文--for this purpose only
    语言是人类对自我意识的表述工具:对世界和事物多深刻的认识,就会有多丰富和符合 逻辑的语言表述
    知行合一:知其然知其所以然
    语言是世界观、方法论的重组和表述
    任何能用编程语言描述的东西都能够用人类语言描述
    面向对象的几个视角
    待解决问题 jscore 与 node.js jsbridge
    浅谈CSRF攻击方式
  • 原文地址:https://www.cnblogs.com/wyBlog117/p/4543716.html
Copyright © 2020-2023  润新知