指点一下:用ASP.net的文件上传后的动作
以前做的一个页面,适用的是ASP组件上传。可是速度实在是有点慢,上传2.3M的一个图片居然要用接近1分钟,所以琢磨着想用ASP.NET来做文件上传,无奈不明白.net的东西,卡住好久。 基本的设想是,页面A点击上传按钮后,另外打开上传页面B,上传文件到指定目录,完成后关闭页面B并将上传的文件名返回至A页面的指定文本框中,然后操作A页面将文件名保存到SQL相应的中表中。 现在,上传页面已经弄好,上传速度也还可以,就是如何将文件名返回显示在页面A中的这一步不知如何处理。 请大家帮忙指点一下,感恩不尽。
两个页面的代码如下:A.asp
<form action="save.asp" method="get">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td height="30" colspan="2">保存上传文件</td>
</tr>
<tr>
<td width="32%" height="30" align="right">文件路径:</td>
<td width="68%" height="30"> <input name="textfield" type="text" size="30">
<a href="b.aspx" target="_blank">选择文件</a></td>
</tr>
<tr align="center">
<td height="30" colspan="2"><input name="save" type="button" value=" 确定 "></td>
</tr>
</table>
</form>
B.ASPX
<%@ Page language="c#" %>
<html>
<head>
<title>文件上传示例</title>
<style type=text/css>
td {font-size:12px}
.big {font-size:14px}
</style>
</head>
<body>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
lblError.Text = "";
} private void btnUpload_Click(object sender, System.EventArgs e)
{
try
{
//判断上传文件的类型
if (!uploadFile.Value.ToLower().EndsWith(".jpg") && !uploadFile.Value.ToLower().EndsWith(".gif") && !uploadFile.Value.ToLower().EndsWith(".txt"))
throw new Exception("只能上传jpg/gif格式图片文件和TXT文档。");
//
//调用标准类库,方法
HttpPostedFile postFile = uploadFile.PostedFile;
//
//
int contentLength = postFile.ContentLength;
//判断上传文件的大小
if (contentLength > 4096*1024)
throw new Exception("不能上传大于 4096K 的文件。");
//
//取得刚刚上传的文件名
string fileName = postFile.FileName;
fileName=fileName.Substring(fileName.LastIndexOf("\\")+1);
postFile.SaveAs(Request.PhysicalApplicationPath +"/uploadimg/"+ fileName);
//保存文件
}
//当出现错误时,打印出错信息
catch(Exception ex)
{ lblError.Text = ex.Message;
}
}
</script>
<form id="UploadForm" method="post" enctype="multipart/form-data" runat="server">
<table width="75%" align=center cellpadding=4 cellspacing=4>
<tr>
<td>
.NET 上传文件
</td>
</tr>
<tr height="1" bgcolor="red">
<td>
</td>
</tr>
<tr>
<td align=center>
<b class="big">文件上传</b> 大小限制 < 4096K</td>
</tr>
<tr>
<td align="center">
<input type="file" id="uploadFile" runat="server" />
<asp:Button ID="btnUpload" Text="上传" Runat="server" OnClick="btnUpload_Click"></asp:Button>
</td>
</tr>
<tr>
<td align=center><asp:Label id="lblError" runat="server" ForeColor="Red" /></td>
</tr> </table>
</form>
</body>
</html>
以前做的一个页面,适用的是ASP组件上传。可是速度实在是有点慢,上传2.3M的一个图片居然要用接近1分钟,所以琢磨着想用ASP.NET来做文件上传,无奈不明白.net的东西,卡住好久。 基本的设想是,页面A点击上传按钮后,另外打开上传页面B,上传文件到指定目录,完成后关闭页面B并将上传的文件名返回至A页面的指定文本框中,然后操作A页面将文件名保存到SQL相应的中表中。 现在,上传页面已经弄好,上传速度也还可以,就是如何将文件名返回显示在页面A中的这一步不知如何处理。 请大家帮忙指点一下,感恩不尽。
两个页面的代码如下:A.asp
<form action="save.asp" method="get">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td height="30" colspan="2">保存上传文件</td>
</tr>
<tr>
<td width="32%" height="30" align="right">文件路径:</td>
<td width="68%" height="30"> <input name="textfield" type="text" size="30">
<a href="b.aspx" target="_blank">选择文件</a></td>
</tr>
<tr align="center">
<td height="30" colspan="2"><input name="save" type="button" value=" 确定 "></td>
</tr>
</table>
</form>
B.ASPX
<%@ Page language="c#" %>
<html>
<head>
<title>文件上传示例</title>
<style type=text/css>
td {font-size:12px}
.big {font-size:14px}
</style>
</head>
<body>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
lblError.Text = "";
} private void btnUpload_Click(object sender, System.EventArgs e)
{
try
{
//判断上传文件的类型
if (!uploadFile.Value.ToLower().EndsWith(".jpg") && !uploadFile.Value.ToLower().EndsWith(".gif") && !uploadFile.Value.ToLower().EndsWith(".txt"))
throw new Exception("只能上传jpg/gif格式图片文件和TXT文档。");
//
//调用标准类库,方法
HttpPostedFile postFile = uploadFile.PostedFile;
//
//
int contentLength = postFile.ContentLength;
//判断上传文件的大小
if (contentLength > 4096*1024)
throw new Exception("不能上传大于 4096K 的文件。");
//
//取得刚刚上传的文件名
string fileName = postFile.FileName;
fileName=fileName.Substring(fileName.LastIndexOf("\\")+1);
postFile.SaveAs(Request.PhysicalApplicationPath +"/uploadimg/"+ fileName);
//保存文件
}
//当出现错误时,打印出错信息
catch(Exception ex)
{ lblError.Text = ex.Message;
}
}
</script>
<form id="UploadForm" method="post" enctype="multipart/form-data" runat="server">
<table width="75%" align=center cellpadding=4 cellspacing=4>
<tr>
<td>
.NET 上传文件
</td>
</tr>
<tr height="1" bgcolor="red">
<td>
</td>
</tr>
<tr>
<td align=center>
<b class="big">文件上传</b> 大小限制 < 4096K</td>
</tr>
<tr>
<td align="center">
<input type="file" id="uploadFile" runat="server" />
<asp:Button ID="btnUpload" Text="上传" Runat="server" OnClick="btnUpload_Click"></asp:Button>
</td>
</tr>
<tr>
<td align=center><asp:Label id="lblError" runat="server" ForeColor="Red" /></td>
</tr> </table>
</form>
</body>
</html>
解决方案 »
- 如何在页面输出超链接页的脚本
- Cookie中存中文,读出后为乱码
- get set 方法问题(在线等出结果结帖)
- 有点难度的问题,高手请进
- <s></s>:WWW 联合会(W3C)现在将元素“s”视为已过时。建议使用较新的构造。
- 天下最简单的asp.net程序,就是运行不出来!!!
- 思归,孟子,各位高手看看:datagrid模板列中使用checkbox实现行的单选,如何实现??
- 求助,WWW.XX.COM/(S(r1sozxzdo1vlz4vbhmgbz255))/indexx.aspx中间的那部分怎么去掉
- 怎么获取HyperLinkField中的信息
- 向大家磕头了!!!!!!!!狂撒100分
- 求一方法,可以把字节单位KB换算成MB
- JS如何与asp.net后台方法互动???
string fileName = postFile.FileName;
fileName=fileName.Substring(fileName.LastIndexOf("\\")+1);
postFile.SaveAs(Request.PhysicalApplicationPath +"/uploadimg/"+ fileName);
//保存文件
Response.Redirect("A.aspx?fileName="+fileName);//把文件名作为参数传过去A页面接收就行了
B
string File= uploadFile.Value;
Response.Redirect("A.aspx?File="+File.ToString());A
TB_TXT.Text = Request.QueryString["File"].ToString()
1、若有多个上传文件,A页面的文本框如何处理?就算是一个一个上传文件,这样的处理只会将之前上传的文件名覆更新掉。
2、若A页面不止一个文本框,那么其他文本框中已写的内容不是就没有了