zoukankan      html  css  js  c++  java
  • 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);
    
            }
    
     

    2,  运行效果如下:

     

  • 相关阅读:
    Centos7上安装docker
    另类SQL拼接方法
    多平台Client TCP通讯组件
    Redis协议详解
    .net下简单快捷的数值高低位切换
    beetle 2.7海量消息广播测试
    FileSync文件同步更新工具
    简单实现TCP下的大文件高效传输
    感知机原理小结
    日志和告警数据挖掘经验谈
  • 原文地址:https://www.cnblogs.com/wang7/p/3913319.html
Copyright © 2011-2022 走看看