我想选择一个存储了很多个号码的文本文件,让后点导入按钮即可将文本文件中的所有号码都加入到id为MobileNum的文本域中来,在本机测试没有任何问题,但是如果上传到服务器上的话就会出现错误,错误提示如下:
未能找到路径“E:\号码\号码1.txt”的一部分。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.DirectoryNotFoundException: 未能找到路径“E:\号码\号码1.txt”的一部分。源错误:
行 251: if (fileExtName == "txt" || fileExtName == "TXT")
行 252: {
行 253: StreamReader fileStream = new StreamReader(txtFilePath, Encoding.Default);
行 254: string txtStr = fileStream.ReadToEnd();
行 255: fileStream.Close();
源文件: e:\web\html\web\Send.aspx.cs 行: 253 堆栈跟踪:
[DirectoryNotFoundException: 未能找到路径“E:\号码\号码1.txt”的一部分。]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +2001792
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +998
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) +115
System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) +85
System.IO.StreamReader..ctor(String path, Encoding encoding) +16
SendSms.btngetnum_Click(Object sender, EventArgs e) in e:\web\html\web\Send.aspx.cs:253
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087
页面代码是这样的:<asp:FileUpload ID="fuFile" runat="server" />
<asp:Button ID="btngetnum" runat="server" class="button" Text="导入号码" OnClick="btngetnum_Click" />
<textarea runat="server" rows="2" cols="20" id="MobileNum" class="sendnumber" ></textarea>
后台按钮事件代码如下: //导入文本文件的按钮事件 protected void btngetnum_Click(object sender, EventArgs e)
{
if (fuFile.HasFile)
{
string txtFilePath = fuFile.PostedFile.FileName;
string fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".") + 1, 3);
if (fileExtName == "txt" || fileExtName == "TXT")
{
StreamReader fileStream = new StreamReader(txtFilePath, Encoding.Default);
string txtStr = fileStream.ReadToEnd();
fileStream.Close();
txtStr = txtStr.Replace("\r\n", ",");
this.MobileNum.Value = txtStr; }
else
{
Response.Write("<script>alert('选取文件格式" + fileExtName + "错误!请上传txt文件!')</script>");
}
}
else
{
Response.Write("<script>alert('请先选择存储号码的txt文本文件!')</script>");
}
}
请大家指点一下 应该怎么写才行了?
未能找到路径“E:\号码\号码1.txt”的一部分。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.DirectoryNotFoundException: 未能找到路径“E:\号码\号码1.txt”的一部分。源错误:
行 251: if (fileExtName == "txt" || fileExtName == "TXT")
行 252: {
行 253: StreamReader fileStream = new StreamReader(txtFilePath, Encoding.Default);
行 254: string txtStr = fileStream.ReadToEnd();
行 255: fileStream.Close();
源文件: e:\web\html\web\Send.aspx.cs 行: 253 堆栈跟踪:
[DirectoryNotFoundException: 未能找到路径“E:\号码\号码1.txt”的一部分。]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +2001792
System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) +998
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) +115
System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) +85
System.IO.StreamReader..ctor(String path, Encoding encoding) +16
SendSms.btngetnum_Click(Object sender, EventArgs e) in e:\web\html\web\Send.aspx.cs:253
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087
页面代码是这样的:<asp:FileUpload ID="fuFile" runat="server" />
<asp:Button ID="btngetnum" runat="server" class="button" Text="导入号码" OnClick="btngetnum_Click" />
<textarea runat="server" rows="2" cols="20" id="MobileNum" class="sendnumber" ></textarea>
后台按钮事件代码如下: //导入文本文件的按钮事件 protected void btngetnum_Click(object sender, EventArgs e)
{
if (fuFile.HasFile)
{
string txtFilePath = fuFile.PostedFile.FileName;
string fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".") + 1, 3);
if (fileExtName == "txt" || fileExtName == "TXT")
{
StreamReader fileStream = new StreamReader(txtFilePath, Encoding.Default);
string txtStr = fileStream.ReadToEnd();
fileStream.Close();
txtStr = txtStr.Replace("\r\n", ",");
this.MobileNum.Value = txtStr; }
else
{
Response.Write("<script>alert('选取文件格式" + fileExtName + "错误!请上传txt文件!')</script>");
}
}
else
{
Response.Write("<script>alert('请先选择存储号码的txt文本文件!')</script>");
}
}
请大家指点一下 应该怎么写才行了?
方法中的第一个参数是寻找服务器上虚拟目录中的路径或文件, 而你在这很明显是读取的输入框中的文件路径,在服务器上找不到的,直接用server.mapPath 先去重新定位下你的文件路径。