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 < )

            {

                return;

            }

            SaveToRead();

        }

        // 1,先保存,再读取文件

        public void SaveToRead()

        {

            // (1)获取上传的文件,保存到 应用程序基目录

            HttpPostedFile file = Request.Files[];

            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 < )

            {

                return;

            }

            SaveToRead();

            ReadFile();

        }

        //2,直接读取上传的文件

        public void ReadFile()

        {

            //(1)将上传的文件同时赋值给file1和file2

            HttpPostedFile file1 = Request.Files[];

            HttpPostedFile file2 = Request.Files[];

            //(2)判断文件为空的方法

            if (file1 == null || file1.ContentLength ==  || 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,  运行效果如下:

HttpPostedFile类的使用方法的更多相关文章

  1. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  2. 第6章 Java类中的方法

    1.如何定义java的方法 什么是方法:方法使用来解决一类问题的代码集合,是一个功能模块在类中定义个方法的方法是: 访问修饰符 返回值类型 方法名(参数列表){ 方法体 } 1.访问修饰符,是限制该方 ...

  3. python 类属性与方法

    Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...

  4. Java Native Interfce三在JNI中使用Java类的普通方法与变量

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 前面我们学习了如何在JNI中通过参数来使用J ...

  5. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  6. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  7. java 27 - 6 反射之 通过配置文件运行类中的方法

    在以前,如果我们想要调用一个类中的方法,只能这样子: 例: 有Cat和Dog两个类,里面有eat和run两个成员方法: public class Dog { public void eat() { S ...

  8. Python的高级特性8:你真的了解类,对象,实例,方法吗

    Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...

  9. Properties类的使用方法

    它提供了几个主要的方法: 1. getProperty ( String key),用指定的键在此属性列表中搜索属性.也就是通过参数 key ,得到 key 所对应的 value. 2. load ( ...

随机推荐

  1. oracle中时间处理

    --查看当前日期.时间SQL> select sysdate from dual; SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ...

  2. IntersectionObserver API

    温馨提示:本文目前仅适用于在 Chrome 51 及以上中浏览. 2016.11.1 追加,Firefox 52 也已经实现. 2016.11.29 追加,Firefox 的人担心目前规范不够稳定,未 ...

  3. 【荐2】Total Commander 7.57 配置选项 个性化设置备份,,,开启时如何自动最大化???(二)

    最近安装了下新版的“Total Commander 7.56”,发现它的默认设置是如此的不好用,现把对其个性化设置备份如下(符合大部分用户的操作习惯): 默认打开Total Commander 7.5 ...

  4. Shell入门教程:Shell当中的特殊变量

    Shell当中的特殊变量 一.保留变量 $IFS 这个变量中保存了用于分割输入参数的分割字符,默认识空格. $HOME 这个变量中存储了当前用户的根目录路径. $PATH 这个变量中存储了当前 She ...

  5. Alpha总结

    一.预期计划 1.时间:11月7日--11月17日 2.小组分工 角色:程序员.美工.文档.测试 这个阶段以编码为主,每个组员参与编码,同时各自根据自己擅长的方面主要负责一个部分. 项目编码工作分工: ...

  6. JDK source 之 ArrayList 需要注意事项

    线程安全 ArrayList内部没有实现原子性操作,所以是非线程安全的.如果需要在线程安全的环境下使用List的话,需要使用Vector 或者CopyOnWriteArrayList,具体场景,自行深 ...

  7. 用Canvas写桌球游戏!!!

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 昨天上班的时候闲着无事,就用Canvas写了个桌球游戏来玩玩....所以就拿这游戏上来水一发.或许对一些刚学canvas的人有帮助. 话说 ...

  8. java基本算法之快速排序

    快速排序:是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确 ...

  9. 解决linux系统启动之:unexpected inconsistency:RUN fsck

    现象: 虚拟机在启动过程中提示: unexpected inconsistency;RUN fsck MANUALLY 原因分析: 1.由于意外关机导致的文件系统问题 解决方法: 方法1: 输入ROO ...

  10. union和union all 合并查询

    union联合查询 SELECT TOP ID,oTitle Title,oInfo Description,Pic Images AND UpTime > dateadd(day,-,UpTi ...