我通过文件上传控件选择文件,选择后点击提交按钮。 在提交按钮单击我有一个如下代码。
System.IO.StreamReader StreamReader1 = new System.IO.StreamReader(fldUpd.PostedFile.FileName);
//fldUpd.PostedFile.FileName is C:\Users\Desktop\FileTypes\t231214.txt
string strTxt = StreamReader1.ReadLine();
在第一行,我得到例外,如找不到路径的一部分.. 只有当我在服务器中部署它时,才会出现此异常。 在我的系统中它运行正常。
答案 0 :(得分:2)
该文件位于其物理位置的客户端计算机上,您无法访问该文件,因为它正在尝试在您的托管环境中查找该文件时为您提供异常。对于您的本地版本,它正在工作,因为托管,机器和客户端机器是相同的,这就是它能够找到该文件的原因。
我假设您正在使用Uplaod server control
然后您需要做的就是保存已发布的文件,如下所示,
fldUpd.PostedFile.SaveAs(Path.Combine(path,fldUpd.FileName));
路径是您要将文件保存到的路径。
Here is more info on how to use the control
如果您想直接阅读该文件,那么您可以按照以下方式进行操作,
从 MSDN
直接复制void DisplayFileContents(HttpPostedFile file)
{
System.IO.Stream myStream;
Int32 fileLen;
StringBuilder displayString = new StringBuilder();
// Get the length of the file.
fileLen = FileUpload1.PostedFile.ContentLength;
// Display the length of the file in a label.
LengthLabel.Text = "The length of the file is " +
fileLen.ToString() + " bytes.";
// Create a byte array to hold the contents of the file.
Byte[] Input = new Byte[fileLen];
// Initialize the stream to read the uploaded file.
myStream = FileUpload1.FileContent;
// Read the file into the byte array.
myStream.Read(Input, 0, fileLen);
// Copy the byte array to a string.
for (int loop1 = 0; loop1 < fileLen; loop1++)
{
displayString.Append(Input[loop1].ToString());
}
// Display the contents of the file in a
// textbox on the page.
ContentsLabel.Text = "The contents of the file as bytes:";
TextBox ContentsTextBox = new TextBox();
ContentsTextBox.TextMode = TextBoxMode.MultiLine;
ContentsTextBox.Height = Unit.Pixel(300);
ContentsTextBox.Width = Unit.Pixel(400);
ContentsTextBox.Text = displayString.ToString();
// Add the textbox to the Controls collection
// of the Placeholder control.
PlaceHolder1.Controls.Add(ContentsTextBox);
}
然后将此方法称为
DisplayFileContents(FileUpload1.PostedFile);