在asp.net中当服务器控件用习惯了,反而会忘记web中最为平常的get与post表单的用法。
这一次在项目中碰到个问题,用户要动态的添加fileupload控件实现多文件上传,这个需求
如果用服务器端控件fileupload就不好实现了。
于是花了一个小时温习了一下,正常的web表单提交,并将体会记录了下来。当然,高手可
以直接忽略。呵呵
1、三个获取页面POST与GET的方法。
<input type="text" name="name" value="test" />
Request.Form["name"] POST接收方式
Request.QueryString["name"] GET接收方式
Request["name"] POST与GET都可以
这里要注意一下,如果页面是checkbox组的话,它会接收到勾选了的checkbox,其中value以逗号分隔。
2、文件上传
这里是我做的多文件上传的一个实例,因为用HTML控件的文件上传比较特殊一点。
首先引入JQUERY
<script type="text/javascript"> function addFileControl() { var fileControlString = '<input name="File1" type="file" /><br />'; $("#fileArea").append(fileControlString); } </script>
页面代码:(注意这里的form没有runat="server",其中enctype="multipart/form-data"是必需的)
<form id="formFileUpload" method="post" action="MiniFileUpload.aspx?type=upload" enctype="multipart/form-data"> <div id="fileArea"> <input name="File1" type="file" /><br /> </div> <input type="button" value="添加" id="btnAddUpload" onclick="addFileControl();" /> <input type="submit" value="上传" /> </form>
后台.cs代码如下:(这里是遍历页面所有的file上传控件,如果页面上只有一个上传控件的话,其实可以用
HttpPostedFile f = Request.Files["name"];
)的方式获取的。
private void fileUploadEvent() { HttpFileCollection fileCollection = Request.Files; int filesCount = fileCollection.Count; for (int i = 0; i < filesCount; i++) { HttpPostedFile file = fileCollection[i]; if (!string.IsNullOrEmpty(file.FileName)) { if (file.FileName.LastIndexOf("\\") != -1) { string fileName = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1);//这里的file.FileName其实是上传文件客户端全路径 if (fileName.LastIndexOf(".") != -1) { string fileNameExtend = fileName.Substring(fileName.LastIndexOf(".")); if (fileNameExtend == ".txt") { string savePath = AppDomain.CurrentDomain.BaseDirectory + "filesUpload\\" + fileName; file.SaveAs(savePath); } } Response.Write(fileName + "<br/>"); } } } }