第一贴:ASP.NET中的文件上传
上传单一的文件HTML页面:
<form enctype="multipart/form-data" runat="server">
<input id="File1" type="file" runat="Server" />
<p>
<input id="Submit1" type="submit" value="Upload File"
runat="Server" onserverclick="SubmitButton_Click" />
</p>
<span id="Span1" runat="Server" />
<p>
<asp:RegularExpressionValidator
id="RegularExpressionValidator1" runat="server"
ErrorMessage="Only mp3, m3u or mpeg files are
allowed!" ValidationExpression="^(([a-zA-
Z]:)|(\\{2}\w+)\$?)(\\(\w[\w
].*))+(.mp3|.MP3|.mpeg|.MPEG|.m3u|.M3U)$"
ControlToValidate="File1">
</asp:RegularExpressionValidator>
<br />
<asp:RequiredFieldValidator
id="RequiredFieldValidator1" runat="server"
ErrorMessage="This is a required field!"
ControlToValidate="File1">
</asp:RequiredFieldValidator>
</p>
</form>
需要注意的是form里面的enctype="multipart/form-data"。
SubmitButton_Click激发事件
void SubmitButton_Click(Object sender, EventArgs e) {
if (File1.PostedFile != null) {
try {
File1.PostedFile.SaveAs("C:\\Uploads\\uploadedfile.txt");
Span1.InnerHtml = "Upload Successful!";
}
catch (Exception ex) {
Span1.InnerHtml = "Error saving file <b>C:\\" +
File1.Value + "</b><br>" + ex.ToString();
}
}
}
只是实现很简单的文本文件上传。至于上传其他文件都是很容易的。
多份文件一起上传HTML页面:
<form enctype="multipart/form-data" runat="server">
<p>
Select File1:<br />
<input id="File1" type="file" runat="Server" />
<br />
Select File2:<br />
<input id="File2" type="file" runat="Server" />
<br />
Select File3:<br />
<input id="File3" type="file" runat="Server" />
<br />
Select File4:<br />
<input id="File4" type="file" runat="Server" />
</p>
<p>
<input id="Submit1" type="submit" value="Upload Files"
runat="Server" onserverclick="SubmitButton_Click" />
<br />
</p>
<span id="Span1" runat="Server"></span>
</form>
后台:
protected void SubmitButton_Click(Object sender, EventArgs e){
string filepath = "C:\\Uploads";
HttpFileCollection uploadedFiles = Request.Files;
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
try
{
if (userPostedFile.ContentLength > 0 )
{
Span1.InnerHtml += "<u>File #" + (i+1) +
"</u><br>";
Span1.InnerHtml += "File Content Type: " +
userPostedFile.ContentType + "<br>";
Span1.InnerHtml += "File Size: " +
userPostedFile.ContentLength + "kb<br>";
Span1.InnerHtml += "File Name: " +
userPostedFile.FileName + "<br>";
userPostedFile.SaveAs(filepath + "\\" +
Path.GetFileName(userPostedFile.FileName));
Span1.InnerHtml += "Location where saved: " +
filepath + "\\" +
Path.GetFileName(userPostedFile.FileName) +
"<p>";
}
}
catch (Exception Ex)
{
Span1.InnerText += "Error: <br>" + Ex.Message;
}
}
}
其实文件上传是很简单的,只要获得客户端要保存的文件路径,然后调用SaveAs方法就可以完成!
<form enctype="multipart/form-data" runat="server">
<input id="File1" type="file" runat="Server" />
<p>
<input id="Submit1" type="submit" value="Upload File"
runat="Server" onserverclick="SubmitButton_Click" />
</p>
<span id="Span1" runat="Server" />
<p>
<asp:RegularExpressionValidator
id="RegularExpressionValidator1" runat="server"
ErrorMessage="Only mp3, m3u or mpeg files are
allowed!" ValidationExpression="^(([a-zA-
Z]:)|(\\{2}\w+)\$?)(\\(\w[\w
].*))+(.mp3|.MP3|.mpeg|.MPEG|.m3u|.M3U)$"
ControlToValidate="File1">
</asp:RegularExpressionValidator>
<br />
<asp:RequiredFieldValidator
id="RequiredFieldValidator1" runat="server"
ErrorMessage="This is a required field!"
ControlToValidate="File1">
</asp:RequiredFieldValidator>
</p>
</form>
需要注意的是form里面的enctype="multipart/form-data"。
SubmitButton_Click激发事件
void SubmitButton_Click(Object sender, EventArgs e) {
if (File1.PostedFile != null) {
try {
File1.PostedFile.SaveAs("C:\\Uploads\\uploadedfile.txt");
Span1.InnerHtml = "Upload Successful!";
}
catch (Exception ex) {
Span1.InnerHtml = "Error saving file <b>C:\\" +
File1.Value + "</b><br>" + ex.ToString();
}
}
}
只是实现很简单的文本文件上传。至于上传其他文件都是很容易的。
多份文件一起上传HTML页面:
<form enctype="multipart/form-data" runat="server">
<p>
Select File1:<br />
<input id="File1" type="file" runat="Server" />
<br />
Select File2:<br />
<input id="File2" type="file" runat="Server" />
<br />
Select File3:<br />
<input id="File3" type="file" runat="Server" />
<br />
Select File4:<br />
<input id="File4" type="file" runat="Server" />
</p>
<p>
<input id="Submit1" type="submit" value="Upload Files"
runat="Server" onserverclick="SubmitButton_Click" />
<br />
</p>
<span id="Span1" runat="Server"></span>
</form>
后台:
protected void SubmitButton_Click(Object sender, EventArgs e){
string filepath = "C:\\Uploads";
HttpFileCollection uploadedFiles = Request.Files;
for (int i = 0; i < uploadedFiles.Count; i++)
{
HttpPostedFile userPostedFile = uploadedFiles[i];
try
{
if (userPostedFile.ContentLength > 0 )
{
Span1.InnerHtml += "<u>File #" + (i+1) +
"</u><br>";
Span1.InnerHtml += "File Content Type: " +
userPostedFile.ContentType + "<br>";
Span1.InnerHtml += "File Size: " +
userPostedFile.ContentLength + "kb<br>";
Span1.InnerHtml += "File Name: " +
userPostedFile.FileName + "<br>";
userPostedFile.SaveAs(filepath + "\\" +
Path.GetFileName(userPostedFile.FileName));
Span1.InnerHtml += "Location where saved: " +
filepath + "\\" +
Path.GetFileName(userPostedFile.FileName) +
"<p>";
}
}
catch (Exception Ex)
{
Span1.InnerText += "Error: <br>" + Ex.Message;
}
}
}
其实文件上传是很简单的,只要获得客户端要保存的文件路径,然后调用SaveAs方法就可以完成!