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, 运行效果如下:
在这里插入图片描述


HttpPostedFile转换成Image或者 Bitmap

代码如下:

HttpFileCollection httpfiles = context.Request.Files;
files = httpfiles[i];

Image im = Image.FromStream(files.InputStream);
Bitmap bitmap = (Bitmap)Image.FromStream(files.InputStream);

猜你喜欢

转载自blog.csdn.net/WuLex/article/details/109115051
今日推荐