关于多文件上传问题!

时间:2022-08-29 12:40:02
是这样的,我用VB写的,用的是HTMLINPUTFILE 控件,想一次把好几个相关的文件上传上去,我加了一个TEXTBOX来说明文件的个数,每个文件是这样的 abcd01.GIF、abcd02.GIF、...希望大家能提供点思路!
    谢谢为盼!

6 个解决方案

#1


能提供用vb.net写的关于这方面的代码么?
多谢!多谢!

#2


在ASP.NET中实现多文件上传

Vb.NET代码

http://lucky_elove.www1.dotnetplayground.com/ShowDetail.aspx?id=58EA3515-36F2-4FD9-AC89-EAF49F59816C

#3


<%--
uploadc.aspx,lzx编写。
单个程序可直接运行。
这是一个单HTMLINPUTFILE上传多个文件较完整的示例程序。我这里使用了DATATable和DropDownListp实现。
已实现把选好的文件显示在下拉列表中,也可从在下拖拉列表中选定一个不想上传文件,按移走文件按钮删除此文件。
程序原始框架参考了飞鹰编写的upload.aspx,转载时请保留此信息。
--%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ page Language="C#" debug="true" %>

<html>
    <head>
        <title>一个HTMLINPUTFILE实现多文件上传示例</title>
        <script language="C#" runat="server">
        public static DataTable upfiles;
public void CreatTable()
{
   upfiles = new DataTable("upfile");
           DataColumn[] keys= new DataColumn[1];
   keys[0]= upfiles.Columns.Add("filename",typeof(string));
   keys[0].AllowDBNull=false;
   upfiles.PrimaryKey= keys;
   upfiles.Columns.Add("filelength",typeof(Int32));
   upfiles.Columns.Add("filestream",typeof(Stream));
   Span1.InnerHtml ="";
   fcount.Text="";
   fname.Text="";
   fsize.Text="";
}

        public void AddFile(object sender , EventArgs E)
{
   if (upfiles==null){
     CreatTable();
   } 
   if(myFile.PostedFile.FileName!="")
                {
                   string nam = myFile.PostedFile.FileName ;
                   int i= nam.LastIndexOf("\\") ;
                   string filename =nam.Substring(i+1) ;
   if(upfiles.Rows.Find(filename)==null)
   {
             int filelen=myFile.PostedFile.ContentLength;
 Stream fstream=myFile.PostedFile.InputStream;
         DataRow dr=upfiles.NewRow();
         dr[0]=filename;//获取文件名
         dr[1]=filelen;//文件长度
         dr[2]=fstream;//文件流
         upfiles.Rows.Add(dr);//增加
 ArrayList dc=new  ArrayList();
 for(int j=0;j<upfiles.Rows.Count;j++)
          {
    DataRow df=upfiles.Rows[j];
  dc.Add(df[0].ToString());
   }
 files.DataSource=dc;
 files.DataBind();

   // fname.Text+=" "+filename+"<br>";
// fcount.Text=upfiles.Rows.Count.ToString();
// fsize.Text+=filelen.ToString()+"<br>";
}


}
else{
  Span1.InnerHtml ="<font color=red>请选择文件!</font>";
}
}

     public void RemoveFile(object sender , EventArgs E)
{
              if(files.SelectedItem.Value!=null){
    string fname=files.SelectedItem.Value; 
    DataRow foundRow= upfiles.Rows.Find(fname);
        if(foundRow!=null)
           upfiles.Rows.Remove(foundRow);
ArrayList dc=new  ArrayList();
 for(int j=0;j<upfiles.Rows.Count;j++)
          {
    DataRow df=upfiles.Rows[j];
  dc.Add(df[0].ToString());
   }
 files.DataSource=dc;
 files.DataBind();
  }
  else{
  Span1.InnerHtml ="<font color=red>请选择文件!</font>";
  }
 }

public void UploadFile(object sender , EventArgs E)
            {
             fcount.Text=upfiles.Rows.Count.ToString();
             if(upfiles.Rows.Count>0) 
             {
    fname.Text="";
fsize.Text="";
                for(int j=0;j<upfiles.Rows.Count;j++)
    {
 
  DataRow dr=upfiles.Rows[j];
  string topath=Server.MapPath(".\\"+dr[0]);
              int FileLen=Convert.ToInt32(dr[1]);
  byte[] input = new byte[FileLen];
  ((System.IO.Stream)dr[2]).Read(input, 0, FileLen);
  FileStream fw = new FileStream(topath,FileMode.Create,FileAccess.Write);
                  fw.Write(input,0,FileLen);
  fw.Close();
                  fname.Text+=" "+dr[0].ToString()+"<br>";
                  fsize.Text+=" "+dr[1].ToString()+"<br>";
       Span1.InnerHtml +="<font color=Blue>文件"+(j+1).ToString()+"上传成功!<br></font>";
  }
            }
upfiles=null;
}

        </script>
    </head>
<body>
    <center><br><br>
    <h3> 一个HTMLINPUTFILE实现多文件同时上传示例 </h3>
    <form id="uploderform" method="post" action="upload.aspx" enctype="multipart/form-data"  runat="server" >

    <table border="1" cellspacing="0" cellpadding="0" >
    <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;请选择上传文件
    <input type="file" id="myFile" MaxLength="50" Size="40" runat="server" >
    </td><td> <input type="button"  value="添加到列表" OnServerClick="AddFile" runat="server" ></td></tr>

<tr><td width=250 align=center>已选择的上传文件列表<br>
<asp:DropDownList id="files" runat="server"></asp:DropDownList>
</td>
    <td align=center><input type="button"  value="移走文件" OnServerClick="RemoveFile" runat="server" ><br>
</td></tr>
<tr><td colspan=2 align=cneter >注意:上传文件大小限制在XXM以下!&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button"  value="上传全部文件" OnServerClick="UploadFile" runat="server" >
</td></tr>
    
    </table>
    </form>
    <br>
    <br>
    <table border="1" cellspacing="0">
    <tr><td td colspan=2 align=center><b>多文件上传情况</b></td>
    </tr>
<tr><td colspan=2 align=center><b><span id="Span1" runat="server" />
            </b></td><tr>
</tr>
 <tr>
    <td>文件个数 :</td>
    <td><asp:label id="fcount" text="" runat="server" /></td></tr>
    <tr>
    <td>文件名称 :</td>
    <td><asp:label id="fname" text="" runat="server" /></td></tr>
    <tr>
    <td>文件类型 :</td>
    <td><asp:label id="fenc" runat="server" /></td></tr>
    <tr>
    <td>文件大小 :(in bytes)</td>
    <td><asp:label id="fsize" runat="server" /></td></tr>
    </table>
    <br>
    <br>
    <br>
    <h5><a href="http://www.eq-hi.ac.cn/">lzx制作</a></h5>
    </center>
</body>
</html>

#4


for(int intI=0;intI<DataList1.Items.Count;intI++)
{
HtmlInputFile FileE =(HtmlInputFile)(DataList1.Items[intI].FindControl("txtPicE"));
if((FileE.PostedFile.FileName.Trim().Length!=0)&&(FileE.PostedFile.ContentLength!=0))
{
string strPicPath=System.Configuration.ConfigurationSettings.AppSettings["news_cn"];
//判斷是否有該文件夾,無則新增
if(!Directory.Exists(strPicPath))
{
try
{
Directory.CreateDirectory(strPicPath);
}
catch
{
RaiseError("需要上傳的文件目錄"+strPicPath+"不存在");
}
}
CreateFileName cfn = new CreateFileName();
cfn.isType = true;
cfn.Length = 4;
cfn.Prefix = "news";
string f_name=FileE.PostedFile.FileName.Trim();

string[] arr = f_name.Split('\\');
f_name = arr[arr.Length-1];
f_name = cfn.Get_File_Name(f_name,strPicPath);
try
{
FileE.PostedFile.SaveAs(strPicPath+"\\"+f_name);
if(strAllName.Trim()=="")
{
strAllName +=f_name;
}
else
{
strAllName +=";"+f_name;
}
}
catch
{
RaiseError("上傳出錯,請確定具有上傳權限!");
}
}
}

#5


谢谢net_lover(孟子E章)网友,可是我访问不了您说的那个网址,请问您能将源码贴在这里
么?或者,发到我的邮箱:zhaorg@csu.edu.cn

    将不胜感激!

#6


谢谢各位,谢谢xrascal(横刀夺爱),谢谢yehanyu(风吹衣袖,月上西楼)
马上结贴!
来者有分!

#1


能提供用vb.net写的关于这方面的代码么?
多谢!多谢!

#2


在ASP.NET中实现多文件上传

Vb.NET代码

http://lucky_elove.www1.dotnetplayground.com/ShowDetail.aspx?id=58EA3515-36F2-4FD9-AC89-EAF49F59816C

#3


<%--
uploadc.aspx,lzx编写。
单个程序可直接运行。
这是一个单HTMLINPUTFILE上传多个文件较完整的示例程序。我这里使用了DATATable和DropDownListp实现。
已实现把选好的文件显示在下拉列表中,也可从在下拖拉列表中选定一个不想上传文件,按移走文件按钮删除此文件。
程序原始框架参考了飞鹰编写的upload.aspx,转载时请保留此信息。
--%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ page Language="C#" debug="true" %>

<html>
    <head>
        <title>一个HTMLINPUTFILE实现多文件上传示例</title>
        <script language="C#" runat="server">
        public static DataTable upfiles;
public void CreatTable()
{
   upfiles = new DataTable("upfile");
           DataColumn[] keys= new DataColumn[1];
   keys[0]= upfiles.Columns.Add("filename",typeof(string));
   keys[0].AllowDBNull=false;
   upfiles.PrimaryKey= keys;
   upfiles.Columns.Add("filelength",typeof(Int32));
   upfiles.Columns.Add("filestream",typeof(Stream));
   Span1.InnerHtml ="";
   fcount.Text="";
   fname.Text="";
   fsize.Text="";
}

        public void AddFile(object sender , EventArgs E)
{
   if (upfiles==null){
     CreatTable();
   } 
   if(myFile.PostedFile.FileName!="")
                {
                   string nam = myFile.PostedFile.FileName ;
                   int i= nam.LastIndexOf("\\") ;
                   string filename =nam.Substring(i+1) ;
   if(upfiles.Rows.Find(filename)==null)
   {
             int filelen=myFile.PostedFile.ContentLength;
 Stream fstream=myFile.PostedFile.InputStream;
         DataRow dr=upfiles.NewRow();
         dr[0]=filename;//获取文件名
         dr[1]=filelen;//文件长度
         dr[2]=fstream;//文件流
         upfiles.Rows.Add(dr);//增加
 ArrayList dc=new  ArrayList();
 for(int j=0;j<upfiles.Rows.Count;j++)
          {
    DataRow df=upfiles.Rows[j];
  dc.Add(df[0].ToString());
   }
 files.DataSource=dc;
 files.DataBind();

   // fname.Text+=" "+filename+"<br>";
// fcount.Text=upfiles.Rows.Count.ToString();
// fsize.Text+=filelen.ToString()+"<br>";
}


}
else{
  Span1.InnerHtml ="<font color=red>请选择文件!</font>";
}
}

     public void RemoveFile(object sender , EventArgs E)
{
              if(files.SelectedItem.Value!=null){
    string fname=files.SelectedItem.Value; 
    DataRow foundRow= upfiles.Rows.Find(fname);
        if(foundRow!=null)
           upfiles.Rows.Remove(foundRow);
ArrayList dc=new  ArrayList();
 for(int j=0;j<upfiles.Rows.Count;j++)
          {
    DataRow df=upfiles.Rows[j];
  dc.Add(df[0].ToString());
   }
 files.DataSource=dc;
 files.DataBind();
  }
  else{
  Span1.InnerHtml ="<font color=red>请选择文件!</font>";
  }
 }

public void UploadFile(object sender , EventArgs E)
            {
             fcount.Text=upfiles.Rows.Count.ToString();
             if(upfiles.Rows.Count>0) 
             {
    fname.Text="";
fsize.Text="";
                for(int j=0;j<upfiles.Rows.Count;j++)
    {
 
  DataRow dr=upfiles.Rows[j];
  string topath=Server.MapPath(".\\"+dr[0]);
              int FileLen=Convert.ToInt32(dr[1]);
  byte[] input = new byte[FileLen];
  ((System.IO.Stream)dr[2]).Read(input, 0, FileLen);
  FileStream fw = new FileStream(topath,FileMode.Create,FileAccess.Write);
                  fw.Write(input,0,FileLen);
  fw.Close();
                  fname.Text+=" "+dr[0].ToString()+"<br>";
                  fsize.Text+=" "+dr[1].ToString()+"<br>";
       Span1.InnerHtml +="<font color=Blue>文件"+(j+1).ToString()+"上传成功!<br></font>";
  }
            }
upfiles=null;
}

        </script>
    </head>
<body>
    <center><br><br>
    <h3> 一个HTMLINPUTFILE实现多文件同时上传示例 </h3>
    <form id="uploderform" method="post" action="upload.aspx" enctype="multipart/form-data"  runat="server" >

    <table border="1" cellspacing="0" cellpadding="0" >
    <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;请选择上传文件
    <input type="file" id="myFile" MaxLength="50" Size="40" runat="server" >
    </td><td> <input type="button"  value="添加到列表" OnServerClick="AddFile" runat="server" ></td></tr>

<tr><td width=250 align=center>已选择的上传文件列表<br>
<asp:DropDownList id="files" runat="server"></asp:DropDownList>
</td>
    <td align=center><input type="button"  value="移走文件" OnServerClick="RemoveFile" runat="server" ><br>
</td></tr>
<tr><td colspan=2 align=cneter >注意:上传文件大小限制在XXM以下!&nbsp;&nbsp;&nbsp;&nbsp;
<input type="button"  value="上传全部文件" OnServerClick="UploadFile" runat="server" >
</td></tr>
    
    </table>
    </form>
    <br>
    <br>
    <table border="1" cellspacing="0">
    <tr><td td colspan=2 align=center><b>多文件上传情况</b></td>
    </tr>
<tr><td colspan=2 align=center><b><span id="Span1" runat="server" />
            </b></td><tr>
</tr>
 <tr>
    <td>文件个数 :</td>
    <td><asp:label id="fcount" text="" runat="server" /></td></tr>
    <tr>
    <td>文件名称 :</td>
    <td><asp:label id="fname" text="" runat="server" /></td></tr>
    <tr>
    <td>文件类型 :</td>
    <td><asp:label id="fenc" runat="server" /></td></tr>
    <tr>
    <td>文件大小 :(in bytes)</td>
    <td><asp:label id="fsize" runat="server" /></td></tr>
    </table>
    <br>
    <br>
    <br>
    <h5><a href="http://www.eq-hi.ac.cn/">lzx制作</a></h5>
    </center>
</body>
</html>

#4


for(int intI=0;intI<DataList1.Items.Count;intI++)
{
HtmlInputFile FileE =(HtmlInputFile)(DataList1.Items[intI].FindControl("txtPicE"));
if((FileE.PostedFile.FileName.Trim().Length!=0)&&(FileE.PostedFile.ContentLength!=0))
{
string strPicPath=System.Configuration.ConfigurationSettings.AppSettings["news_cn"];
//判斷是否有該文件夾,無則新增
if(!Directory.Exists(strPicPath))
{
try
{
Directory.CreateDirectory(strPicPath);
}
catch
{
RaiseError("需要上傳的文件目錄"+strPicPath+"不存在");
}
}
CreateFileName cfn = new CreateFileName();
cfn.isType = true;
cfn.Length = 4;
cfn.Prefix = "news";
string f_name=FileE.PostedFile.FileName.Trim();

string[] arr = f_name.Split('\\');
f_name = arr[arr.Length-1];
f_name = cfn.Get_File_Name(f_name,strPicPath);
try
{
FileE.PostedFile.SaveAs(strPicPath+"\\"+f_name);
if(strAllName.Trim()=="")
{
strAllName +=f_name;
}
else
{
strAllName +=";"+f_name;
}
}
catch
{
RaiseError("上傳出錯,請確定具有上傳權限!");
}
}
}

#5


谢谢net_lover(孟子E章)网友,可是我访问不了您说的那个网址,请问您能将源码贴在这里
么?或者,发到我的邮箱:zhaorg@csu.edu.cn

    将不胜感激!

#6


谢谢各位,谢谢xrascal(横刀夺爱),谢谢yehanyu(风吹衣袖,月上西楼)
马上结贴!
来者有分!