- HTML+CSS网页设计实践教程
- 田中雨
- 782字
- 2021-03-19 20:43:07
4.2 实验指导4-1:将文件上传到服务器端
虽然前面的练习已经获取到选择文件的基本信息,也能够限制图片的类型,但是,最重要的一步是将这些文件上传到服务器端指定的目录中,这样,删除本地的文件时,并不会影响到服务器端目录中的文件。
将选择的文件上传到服务器端时需要借助其他知识实现上传的功能,本节实验指导结合ASP.NET实现文件上传的功能,实现步骤如下。
(1)打开VS 2010或更高级的版本工具,创建Index.aspx页面,该页面提供用户选择文件。代码如下。
<form id="form1" action="Success.aspx" enctype="multipart/form-data" method="post" > <h2><img src="imgs/bullet1.gif" />文件上传</h2> 选择一个或者多个文件 <input type="file" id="bookfile" multiple="true" name="bookfiles" /> <input type="button" value="预览" onclick="getFilesInfo()" /> <input type="submit" value="上传" /> </form>
(2)单击上个步骤中所添加的名称是“预览”的按钮时触发Click事件调用JavaScript中的getFilesInfo()函数,该函数中的代码遍历用户选择的多个文件,最后显示一共上传的文件数量。代码如下。
function getFilesInfo() { var result = document.getElementById("tFiles"); var filelists = document.getElementById("bookfile"); for (var i = 0; i < filelists.files.length; i++) { var aFile = filelists.files[i]; var str = "<tr><td>" + aFile.name + "</td><td>" + aFile.size + "字节</td><td>" + aFile.type + "</td> </tr>"; result.innerHTML += str; } result.innerHTML += "<tr><td colspan='3'>本次一共上传" + document.getElementById("bookfile").files.length + "个文件。</td></tr>"; }
(3)运行页面选择文件后单击【浏览】按钮查看效果,如图4-11所示。
图4-11 单击【浏览】按钮查看效果
(4)单击【上传】按钮时会链接到Success.aspx页面,在该页面接收用户所选择的文件并进行处理,将处理后的结果返回。如果不存在Success.aspx页面进行添加,添加完成后向页面的合适位置添加显示结果的span元素,并为该元素添加runat属性转换为控件。代码如下。
<h3>上传结果:<span id="msginfo" runat="server"></span></h3>
(5)为Success.aspx页面后台的Load事件添加代码,在这些代码中首先获取上传的文件的数量。如果数量不为0时则遍历上传的文件,并且创建HttpPostedFile对象,如果该对象所获取的ContentLength属性的长度大于0,并且该对象不为空,那么调用SaveAs()方法将文件上传到当前项目的upload目录下,最后将结果返回。Load事件代码如下。
private string messageInfo = "上传成功!";//返回信息 protected void Page_Load(object sender, EventArgs e) { int iTotal = Request.Files.Count; if (iTotal == 0) { messageInfo = "没有数据"; } else { for (int i = 0; i < iTotal; i++) { HttpPostedFile file = Request.Files[i]; if (file.ContentLength > 0 || !string.IsNullOrEmpty(file.FileName)) { file.SaveAs(System.Web.HttpContext.Current.Server.MapPath ("upload/"+ Path.GetFileName(file.FileName)));//保存文件 } } messageInfo += "一共上传" + iTotal + "个文件。"; } msginfo.InnerText = messageInfo; }
(6)继续操作页面,选择文件后单击【上传】按钮上传文件,上传成功时的效果如图4-12所示。
图4-12 上传文件到服务器端成功时的效果