通过 HTTP POST 上传文件到服务器.

本文介绍了在ASP.NET应用中如何处理客户端上传文件的问题,包括使用Activex控件选择文件夹和批量上传,以及通过HTTP POST方式上传文件的原理和代码示例。在客户端,使用WebClient类的UploadFile方法发送application/octet-stream格式的字节流到服务端。服务端通过Request对象的Files集合获取上传文件,并保存到服务器目录。
摘要由CSDN通过智能技术生成

在写 ASP.NET 应用的时候, 往往会碰到客户端上传文件的情况,这个时候客户一般希望能够想 windows 应用一样, 能够选择文件夹, 浏览所要下载的文件,批量上传, 这个时候. 有几个特征:

  • 1. 客户可以自由的浏览本地的文件夹, 选择多个文件同时上传.
  • 2. 上传之前用户无法预知上传文件的数目.
  • 3. 因为是 ASP.NET 应用, 客户端可能没有装 .NET Framework.

其实,我们知道.如果要跟 IE 端客户文件系统交互的话,代码必须在客户端执行. 这个时候我们可以写一个 Activex 控件来实现选择文件夹和上传.

一般我们常用两种方式往服务端上传文件

1. FTP , 可以调用一些现成的 FTP 组件, 在 VB 里面可以调用 Internet Transfer Control

2. HTTP , 使用 HTTP Post application/octet-stream 格式的字节流给服务端.

FTP 很容易实现,我们不予考虑,着重提一下HTTP 的方式.

 

我们在单个文件上传的时候,一般都有以下的代码:

<%@ Page Language="C#" AutoEventWireup="True" %>

<html>
<head>
 
   <script runat="server">
 
      void Button1_Click(object sender, EventArgs e)
      {

         // Get the HtmlInputFile control from the Controls collection
         // of the PlaceHolder control.
         HtmlInputFile file = (HtmlInputFile)Place.FindControl("File1");
 
         // Make sure a file was submitted.
         if (Text1.Value == "")
         {
            Span1.InnerHtml = "Error: you must enter a file name";
            return;
         }
 
         // Save file to server.
         if (file.PostedFile != null)
         {
            try
            {
               file.PostedFile.SaveAs("c://temp//"+Text1.Value);
               Span1.InnerHtml = "File uploaded successfully to " +
                  "<b>c://temp//" + Text1.Value + "</b> on the Web server";
            }
            catch (Exception exc)
            {
               Span1.InnerHtml = "Error saving file <b>c://temp//" +
                                 Text1.Value + "</b><br>" + exc.ToString();
            }
         }
      }

      void Page_Load(object sender, EventArgs e)
      {

         // Create a new HtmlInputFile control.
         HtmlInputFile file = new HtmlInputFi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值