网络页面可通过表单的行为属性调用脚本。它应该指向ASP.NET页面。列表F中的HTML代码是一个样本。
列表F
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html><head><title> TechRepublic File Upload Example </title>
</head><body>
<form id="frmFileUploadDemo" name="frmFileUploadDemo" action="upload.aspx">
<input type="file" name="fileUpload" id="fileUpload" />
<br /><br />
<input type="submit" id="butSubmit" value="Submit" />
</form></body></html>
安全
你应该在网络服务器中建立文件夹,将文件保存在代码指定的目录中。另外,你还要限制上传文件的类型;例如,你要阻止恶意代码,大型视频,以及给服务器造成麻烦的内容。
你可以用文件的MIME类型来限制用户上传的文件类型。HTML标准中包含一个输入元素的行为属性,你可通过包含合法的MIME类型,利用它来限制上传的内容。见列表G。
列表G<Input type="file" name="fileUpload" id="fileUpload" runat="Server" accept="application/msword" />
并不是所有的网络用户都支持属性,使用代码解决方案更为可靠。列表H中的代码对第一个实例做出修改,使其只接受Word文本。如果上传文件的内容类型为微软Word的MIME类型,则只对文件进行保存。
列表H
><%@ Page language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html><head><title> TechRepublic File Upload Example </title>
</head>
<script language="c#" runat="server">
private void btnSubmit_Click(object o, EventArgs e) {
if (fileUpload.PostedFile != null) {
string uploadPath = "files";
string filename;
try {
if (fileUpload.PostedFile.ContentLength > 0) {
if (fileUpload.PostedFile.ContentType == "application/msword") {
int pos = fileUpload.PostedFile.FileName.LastIndexOf("\\");
if (pos > 0)
filename = fileUpload.PostedFile.FileName.Substring(pos + 1);
else
filename = fileUpload.PostedFile.FileName;
fileUpload.PostedFile.SaveAs(Server.MapPath(uploadPath) + "\\" + filename);
} else {
Response.Write("You may only upload Word documents.");
} } else
Response.Write("Empty file may not be uploaded.");
} catch (Exception ex) {
Response.Write("Error: " + ex.Message.ToString());
} } }
</script>
<body>
<h2 align="center">TechRepublic File Upload Example</h2>
<div id="divCenter" align="center">
<form id="frmFileUploadDemo" method="post" runat="server">
<input type="file" name="fileUpload" id="fileUpload" runat="server" size="50"
accept="application/ms-word" />
<br /><br />
<input type="submit" id="btnSubmit" value="Submit" runat="server" OnServerClick="btnSubmit_Click" />
</form></div></body></html>
>接受所有文件
自上传输入元素出现以来,接受文件上传就是一个标准的网络作法,这没有多大的改变。但是,ASP.NET简化了提交文件的过程。通过ASP.NET页面,或者标准的HTML表单,你都可以轻松地处理提交过程,并限制用户上传的内容。
Tony Patton拥有丰富的Java、VB、Lotus及XML方面的知识,是一个专业的应用程序开发人员。