找不到路径的一部分' C:\ Users \ Desktop \ FileTypes \ t231214.txt'

时间:2015-02-09 11:51:10

标签: asp.net

我通过文件上传控件选择文件,选择后点击提交按钮。 在提交按钮单击我有一个如下代码。

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();

在第一行,我得到例外,如找不到路径的一部分.. 只有当我在服务器中部署它时,才会出现此异常。 在我的系统中它运行正常。

1 个答案:

答案 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);

Here is more info on this