HttpPostedFile hf = Request.Files[0];
这里只能获取第一个
+ runat=server
---給你做了例子
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxUpload.aspx.cs" Inherits="AjaxUpload" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>未命名頁面</title>
<script language="javascript" type="text/javascript" src="JS/jquery-1.3.2.min.js"></script>
<script language="javascript" type="text/javascript" src="JS/ajaxFileUpload.js"></script>
<script language="javascript" type="text/javascript" src="JS/MuUpload.js">
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="file" runat="server" Style="display: none;" />
<input type="button" id="btn_submit" value="提交" />
<a href="#" id="a_add">增加</a>
<div id="content">
</div>
</div>
</form>
</body>
</html>
--js為 jquery
--為ajaxFileUpload.js
--js --- MuUpload.js的內容
$(document.body).ready(function()
{
$("#a_add").click(function()
{
var id=Math.round(Math.random()*100000);
var fid="FILE_"+id;
var sid="SPAN_"+id;
var html="<p id='p_" +id +"'><input type=file id='"+fid+"' name='name_"+fid+"'/> <span id='"+sid+"'></span><span id='DELETE_"+sid+"' style='cursor:pointer;color:red;font-size:8pt;' pid='p_"+id+"' onclick='DeleteFILE(this)'>刪除</span></p>";
$("#content").append(html);
});
$("#btn_submit").click(function()
{
$("#content").find("input[type=file]").each(function()
{
var fId=$(this).attr("id");
var mId=fId.replace("FILE_","SPAN_");
$.ajaxFileUpload(
{
url:'upload.aspx',
secureuri:false,
dataType:'json',
async:false,
fileElementId:fId,
beforeSend:function()
{
$("#"+mId).html("正在上傳,請稍後...");
},
success: function (data)
{
if(data.error!="")
{
$("#"+mId).html(data.error);
}
else
{
$("#"+mId).html("操作成功");
}
},
error:function()
{
$("#"+mId).html("出現錯誤");
}
});
});
return false;
});
});
function DeleteFILE(obj)
{
var id=$(obj).attr("pid");
$("#"+id).remove();
}
---後台上傳文件的地方
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;
using System.IO;
public partial class Upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string msg = "";
string error = "";
if (Request.Files.Count > 0)
{
HttpPostedFile file = Request.Files[0];
double f = 0;
if (file.ContentLength == 0)
{
error = "文件不能為空";
}
else
{
f = file.ContentLength / 1024;
if (f >= 15000)
{
error = "文件須小於10M";
}
else
{
string filePath = "";
string fileExt = Path.GetExtension(file.FileName);
Random rd = new Random();
string loadFilePath = Server.MapPath("~/AJAX/");
string FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + WebCom.RandomnAlpha(8) + fileExt;
file.SaveAs(loadFilePath + FileName);
int k = 1;
error = (k == 0) ? "已經上載文件." : "";
}
}
}
else
{
error = "發生未知異常";
}
string result = "{ error:'" + error + "', msg:'" + msg + "'}";
Response.Write(result);
Response.End();
}
}
即时一次请求多个文件上传,也是一个文件一个文件上传到服务器的,所以服务器端你可以使用HttpPostedFile这个类来处理上传的文件的,你可以取Request.Files这个集合进行判断,如果Request.Files.Count大于0,然后使用for循环进行取出每一个文件对象进行保存即可。
注意一点:在使用Form进行数据提交的时候,需要添加name属性,<input type="file" id="file0" />这样子在服务器端是获取不到的,需要加上那么属性<input type="file" id="file0" name="file0" />
我将楼主的代码敲了下,改了两个地方:
1.将第一个li中的控件换成服务器控件
<li>
<asp:FileUpload runat="server" ID="file0" />
</li>
2.像卡索说的,为每个上传控件加个name.
<script type="text/javascript">
function add_file(){
var li = document.createElement("li");
var input_file = document.createElement("input");
input_file.setAttribute("type","file");
var id="Math"+Math.random()*1000;
input_file.setAttribute("id",id);
input_file.setAttribute("name",id);
li.appendChild(input_file);
document.getElementById("filelist").appendChild(li);
}
</script>
我把后台代码改了下,可以看到文件名称,如下:
protected void Save_Click(object sender, EventArgs e)
{
Response.Write(Request.Files.Count.ToString()+"<br/>");
for (int i = 0; i < Request.Files.Count; i++)
{
Response.Write("文件名:"+Request.Files[i].FileName+"<br/>");
}
}
结果:
2
文件名:新建 文本文档 (2).txt
文件名:新建 文本文档 (3).txt