博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET多文件上传方案
阅读量:6946 次
发布时间:2019-06-27

本文共 3231 字,大约阅读时间需要 10 分钟。

ContractedBlock.gif
ExpandedBlockStart.gif
Code
using System;
using System.Data;
using System.Configuration;
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;
using System.Collections;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!Page.IsPostBack)//首次执行页面
        {
            SFUPC();
//页面执行一次将上传文件控件集到缓存中
        }
        
    }
    
protected void Button1_Click(object sender, EventArgs e)
    {
        UpFile();
//执行上传文件
    }
    
protected void Button2_Click(object sender, EventArgs e)
    {
        InsertC();
//执行添加控件方法
    }
    
private void SFUPC()//该方法用于保存当前页面上传文件控件集到缓存中
    {
        ArrayList AL 
= new ArrayList();//创建动态增加数组
        foreach (Control C in F.Controls)
        {
            
if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
            {
                HtmlTableCell HTC 
= (HtmlTableCell)C.Controls[0];
                
foreach (Control FUC in HTC.Controls)
                {
                    
if (FUC.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")
                    {
                        FileUpload FU 
= (FileUpload)FUC;
                        AL.Add(FU);
                    }
                }
            }
        }
        Session.Add(
"FilesControls", AL);
    }
    
private void InsertC()//该方法用于添加一个上传文件的控件
    {
        ArrayList AL 
= new ArrayList();
        
this.F.Rows.Clear();
        GetInfo();
        HtmlTableRow HTR 
= new HtmlTableRow();
        HtmlTableCell HTC 
= new HtmlTableCell();
        HTC.Controls.Add(
new FileUpload());
        HTR.Controls.Add(HTC);
        F.Rows.Add(HTR);
        SFUPC();
    }
    
private void GetInfo()//该方法用于读取缓存中存储的上传文件控件集
    {
        ArrayList AL 
= new ArrayList();
        
if (Session["FilesControls"!= null)
        {
            AL 
= (System.Collections.ArrayList)Session["FilesControls"];
            
for (int i = 0; i < AL.Count; i++)
            {
                HtmlTableRow HTR 
= new HtmlTableRow();
                HtmlTableCell HTC 
= new HtmlTableCell();
                HTC.Controls.Add((System.Web.UI.WebControls.FileUpload)AL[i]);
                HTR.Controls.Add(HTC);
                F.Rows.Add(HTR);
            }
        }
    }
    
private void UpFile()//该方法用于执行文件上传操作
    {
       
        
if (FileUpload1.PostedFile.FileName == "")
            {
                Response.Write(
"<script language=javascript>alert('上传文件不能为空!')</script>");
                
return;
            }
            
else
            {
                
string FilePath = Server.MapPath("./"+ "Files";
                HttpFileCollection HFC 
= Request.Files;
                
for (int i = 0; i < HFC.Count; i++)
                {
                    HttpPostedFile UserHPF 
= HFC[i];
                    
try
                    {
                        
if (UserHPF.ContentLength > 0)
                        {
                            UserHPF.SaveAs(FilePath 
+ "\\" + System.IO.Path.GetFileName(UserHPF.FileName));
                            SqlConnection con 
= new SqlConnection("server=(local);user id=sa;pwd=;Database=mrdb");
                            con.Open();
                            
string str = "select count(*) from tb_files where name='" + System.IO.Path.GetFileName(UserHPF.FileName) + "'";
                            SqlCommand mycom 
= new SqlCommand(str, con);
                            
int intcont = Convert.ToInt32(mycom.ExecuteScalar());
                            
if (intcont > 0)
                            {
                                Response.Write(
"<script language=javascript>alert('对不起!不允许上传相同记录!')</script>");
                                
return;
                            }
                            
else
                            {
                                SqlCommand com 
= new SqlCommand("INSERT INTO tb_files(name,fileload)values('" + System.IO.Path.GetFileName(UserHPF.FileName) + "','" + FilePath + "')", con);
                                com.ExecuteNonQuery();
                            }
                        }
                    }
                    
catch (Exception ex)
                    {
                        Response.Write(ex.Message.ToString());
                    }
                }
            }
            
if (Session["FilesControls"!= null)
            {
                Session.Remove(
"FilesControls");
            }
            Response.Write(
"<script language=javascript>alert('上传成功!');location='InFo.aspx'</script>");
        }
    
protected void Button3_Click(object sender, EventArgs e)
    {
        Response.Redirect(
"InFo.aspx");
    }
}

转载于:https://www.cnblogs.com/hubcarl/archive/2009/06/24/1510103.html

你可能感兴趣的文章
使用MongoDB的GridFS保存用户文件的折腾日记
查看>>
Linux的Find使用
查看>>
ios开发工程师笔试基础题
查看>>
基于Struts构建新闻发布系统
查看>>
基于Struts实现用户登录和注册模块
查看>>
CentOS安装Apache
查看>>
C++ getline函数的使用
查看>>
SQL Server删除重复行的6个方法
查看>>
Mysql 临时表的创建和删除
查看>>
db file scattered read等待事件
查看>>
ArcGIS Engine 中的多线程使用 (转载)
查看>>
linux下c的网络编程---转载
查看>>
filter中的DelegatingFilterProxy使用事例
查看>>
WinForm 天猫2013双11自动抢红包【源码下载】
查看>>
学习数学从《数学之美》开始
查看>>
flashcache的实现与分析
查看>>
[UML]UML系列——状态机图statechart diagram
查看>>
微信公众平台开发(74) 用户分组管理
查看>>
二、jdk命令之javah命令(C Header and Stub File Generator)
查看>>
ios模拟器未能安装此应用程序
查看>>