指点一下:用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">&nbsp;<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> 大小限制 &lt; 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>

解决方案 »

  1.   


    string fileName = postFile.FileName; 
    fileName=fileName.Substring(fileName.LastIndexOf("\\")+1); 
    postFile.SaveAs(Request.PhysicalApplicationPath +"/uploadimg/"+ fileName); 
    //保存文件 
    Response.Redirect("A.aspx?fileName="+fileName);//把文件名作为参数传过去A页面接收就行了
      

  2.   

    用重定向的方法
    B
      string File= uploadFile.Value;
      Response.Redirect("A.aspx?File="+File.ToString());A
    TB_TXT.Text = Request.QueryString["File"].ToString()
      

  3.   

    感谢z812183667和mxcaikun兄弟。顺便还有2个问题
    1、若有多个上传文件,A页面的文本框如何处理?就算是一个一个上传文件,这样的处理只会将之前上传的文件名覆更新掉。
    2、若A页面不止一个文本框,那么其他文本框中已写的内容不是就没有了