惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
G
Google Developers Blog
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
小众软件
小众软件
月光博客
月光博客
Recent Announcements
Recent Announcements
人人都是产品经理
人人都是产品经理
P
Proofpoint News Feed
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
The Cloudflare Blog
博客园_首页
美团技术团队
大猫的无限游戏
大猫的无限游戏
B
Blog
IT之家
IT之家
Jina AI
Jina AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 大白鲨

"Maximum length exceeded"错误的解决办法 - 大白鲨 javascript的数组使用方法 - 大白鲨 - 博客园 asp.net操作Excel拒绝访问的解决 利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件 IIS错误Server Application Error(http 500 错误)解决办法 SQL Server的SQL技巧 网络MSDTC配置方法 visual studio 2005包加载失败的解决办法 Office Excel 2003找不到安装文件sku011.cab的解决办法 delphi连接DCOM的安全配置 Atlas中对DataTable操作的脚本 去掉asp.net2.0的树控件刷新功能 通过Web Services上传和下载图片文件 IIS 5.0错误解决集锦 访问IIS时返回的状态代码解释参考 使用UDPClient 编写聊天程序 Windows安全配置技术 为IIS配置安全的发布方法 SQL Server中各个系统表的作用
ASP.NET 2.0 实现多文件上传
大白鲨 · 2007-05-04 · via 博客园 - 大白鲨

想实现任意多个文件上传的功能,点击一次按钮可以添加一个文件上传框,以前在网络硬盘上看到过。javascript我知道怎么实现任意添加上传文件控件,问题是添加的是Html控件。
于是上Google搜索“ASP.NET 多文件上传”,还真找到一篇文件,标题为《在ASP.NET中实现多文件上传》,文章里面是VB.NET实现的,功能和我要的一模一样,我主要是要看服务器端怎么获取客户端上传的文件,看了文中的代码,原来这么简单,System.Web.HttpContext.Current.Request.Files就包含客户端浏览器上传的文件了,我用C#写了一段简单的代码,原本以为应该可以了,结果出乎意料上传3个图片System.Web.HttpContext.Current.Request.Files返回的文件格式还是0个。
不知道什么原因,看看代码,这么简单不可能些错啊,再看看google搜索结果里的另外几篇文章,发现我看的第一篇不是原做,作者的网上原作的实例有两个版本,一个是VB.NET一个是C#的,现在我不用自己写了,复制原文的代码到本地,运行,果然可以啊,那我写的代码怎么不行?反复比对我的代码和文章中代码的区别,试了几个地方,最后发现和其他地方都没有关系,原因出在<form id="form1" runat="server" enctype="multipart/form-data"> 的enctype属性上,VS 2005建的页面里没有这个属性,而文章实例里有,我后来加上enctype="multipart/form-data"后System.Web.HttpContext.Current.Request.Files就能z正常获取文件个数了。

    大概是VS 2003建的页面默认有这个属性吧,否则这么重要的属性作者应该会在文章中提到的。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Demo._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script language="JavaScript">
function addFile()
{
 
var str = '<INPUT type="file" size="50" NAME="File">'
 document.getElementById('MyFile').insertAdjacentHTML(
"beforeEnd",str)

}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>
</head>
<body>
    
<form id="form1" runat="server" enctype="multipart/form-data">
           
<input type="button" value="增加(Add)" onclick="addFile()">
          
<input onclick="this.form.reset()" type="button" value="重置(ReSet)">
          
<asp:Button Runat="server" Text="上传" ID="Upload" OnClick="Upload_Click1" ></asp:Button>
    
<div id="MyFile">
         
<input type="file" name="File" /> 
    
</div>
 
</form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Demo
{
    
public partial class _Default : System.Web.UI.Page
    
{
        
protected void Page_Load(object sender, EventArgs e)
        
{
        }

        
protected void Upload_Click1(object sender, EventArgs e)
        
{

            HttpFileCollection _files 
= System.Web.HttpContext.Current.Request.Files;

            
for (int i = 0; i < _files.Count; i++)

 
{
                _files[i].SaveAs(Server.MapPath(
"~/Files/" + _files[i].FileName));
            }

        }

    }

}