怎样实现多文件上传?谢谢
如果显式使用多个<input type="file">能够实现,但是这时候需要添加相应个数的控件。
像邮箱那样,能够多次添加文件(有一个“粘贴”按钮)这是怎么实现的?
我的程序需要能够上传任意数目的文件,但只显示一个<input>这怎么做?
大家给个例子好不好?
问题点数:20、回复次数:12Top
1 楼xaodoudou(我不想做潜水员)回复于 2004-05-01 19:37:53 得分 1
也是
我也想知道 关注中Top
2 楼suiyun(始终搞不懂com+)回复于 2004-05-01 20:52:42 得分 0
大家帮忙啊Top
3 楼bitsbird(一瓢 在路上...)回复于 2004-05-01 20:58:03 得分 2
http://dotnet.aspx.cc/ShowDetail.aspx?id=58EA3515-36F2-4FD9-AC89-EAF49F59816CTop
4 楼xytoto(我是一个演员)回复于 2004-05-01 22:00:00 得分 1
Request.Files[]Top
5 楼chengsion()回复于 2004-05-01 22:32:31 得分 10
用一个Session(根据情况也可以用Cache)保存ArrayList对象,ArrayList对象可以保存任意个Object.
每粘贴一次就将添加一个HttpPostedFile对象至ArrayList,等上传时,遍历ArrayList,保存HttpPostedFile.
<%@Page debug="true"%>
<%@Import Namespace="System"%>
<%@Import Namespace="System.IO"%>
<%@Import Namespace="System.Collections"%>
<script language="c#" runat = "server">
void Page_Load(Object sender,EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["allFile"]==null)
{
ArrayList allFile = new ArrayList();
Session["allFile"] = allFile;
}
}
}
void doPostedFile(Object sender,EventArgs e)
{
HttpPostedFile hpf = upLoadFile.PostedFile;
ArrayList allFile;
if (hpf.ContentLength==0)
{
return;
}
try
{
allFile = (ArrayList)Session["allFile"];
allFile.Add(hpf);
errMessage.Text = "当前共粘贴"+ allFile.Count + "个文件";
//Session["allFile"] = allFile;
}
catch(Exception excp)
{
errMessage.Text = excp.Message;
}
lblMessage.Text += hpf.FileName + "<br/>";
}
void doSaveFile(HttpPostedFile hpf)
{
char []de={'\\'};
string strFileName;
string []aFileName;
aFileName = hpf.FileName.Split(de);
strFileName = aFileName[aFileName.Length-1];
try
{
hpf.SaveAs(Server.MapPath(".") + "\\" + strFileName);
}
catch (Exception excp)
{
errMessage.Text += excp.Message+"<br/>";
}
}
void doUpLoadFile(Object sender,EventArgs e)
{
ArrayList allFile = new ArrayList();
try
{
allFile = (ArrayList)Session["allFile"];
}
catch(Exception excp)
{
errMessage.Text=excp.Message;
}
IEnumerator myFile = allFile.GetEnumerator();
HttpPostedFile file;
errMessage.Text += "Count" + allFile.Count;
while(myFile.MoveNext())
{
try
{
file = (HttpPostedFile)(myFile.Current);
doSaveFile(file);
}
catch(Exception excp)
{
errMessage.Text = excp.Message;
}
}
((ArrayList)Session["allFile"]).Clear();
errMessage.Text="上传结束";
lblMessage.Text="";
}
</script>
<html>
<head><title>上传文件</title></head>
<body>
<form Enctype="multipart/form-data" runat="server">
<b>上传单个文件</b><br/>
<hr width="60%">
请选择文件:<br/>
<input type="file" size="30" id="upLoadFile" runat="server"/><br/>
<asp:Button Text="粘贴" OnClick="doPostedFile" runat="server"/><br/>
<asp:Button Text="上传" OnClick="doUpLoadFile" runat="server"/><br/>
<asp:Label id="errMessage" runat="server"/><br/>
<asp:Label id="lblMessage" runat="server"/><br/>
</form>
</body>
</html>Top
6 楼swzheng(zheng)回复于 2004-05-01 23:02:30 得分 3
我这个保证可以用.我不久前刚用的.
<html>
<script language="vb" runat="server">
sub btnupload_click(snder as object,e as eventargs)
lblfilename.text=myfile.postedfile.filename
lblcontenttype.text=myfile.postedFile.contenttype
lblcontentlength.text=myfile.postedfile.contentlength
dim filepart() as string=split(myfile.postedfile.filename,"\")
DIM strname as string=filepart(filepart.length-1)
myfile.postedFile.saveas(server.mappath("wwwroot")&strname)
end sub
</script>
<body>
<form method="post" enctype="multipart/form-data" runat="server" ID="Form1">
<h3>asp.net文件上传</h3>
<input id="myfile" type="file" size="20" maxlength="60" runat="server" NAME="myfile">
<p>
<asp:Button id="btnupload" text="上传" Runat="server" OnClick="btnupload_click"></asp:Button>
<HR>
文件名:
<asp:Label id="lblfilename" runat="server"></asp:Label>
<P>文件类型:
<asp:Label id="lblcontenttype" Runat="server"></asp:Label>
<P>文件大小:
<asp:Label id="lblcontentlength" Runat="server"></asp:Label>
</form>
</body>
</html>Top
7 楼swzheng(zheng)回复于 2004-05-01 23:05:40 得分 0
错了,我刚才没有看清你的要求.
上帖不符合.Top
8 楼babyjavalover(勇敢)回复于 2004-05-02 14:10:55 得分 1
关注Top
9 楼suiyun(始终搞不懂com+)回复于 2004-05-04 21:10:31 得分 0
感谢各位,我的要求是在上传文件的过程中客户只能看到一个上传控件,但是能够制定多个上传文件Top
10 楼wwcll(好好学习,向思归大哥看齐)回复于 2004-05-05 09:50:05 得分 1
stuedy upTop
11 楼GreenSpring(清青泉(www.iblogs.cn))回复于 2004-05-08 14:33:33 得分 1
up
Top
12 楼ILoveProgramer(骆驼)回复于 2004-08-04 18:49:03 得分 0
markTop




