文件被复制,然后抱怨它不存在

本文关键字:不存在 然后 复制 文件 | 更新日期: 2023-09-27 18:04:45

我有以下代码;

string oldPath = @"C:''Users''akclark.DOMAIN-A''Documents''Visual Studio 2013''WebSites''Quote''quote.xlsx";
string newFileName = "" + GlobalVariables.quoteNumber + "_" + GlobalVariables.quoteRevision + ".xlsx";
string newPath = @"C:''Users''akclark.DOMAIN-A''Documents''Visual Studio 2013''WebSites''Quote''" + newFileName;
FileInfo f1 = new FileInfo(oldPath);
if (f1.Exists)
{
    FileInfo f2 = new FileInfo(newPath);
    if (f2.Exists){
    File.Delete(newPath);
    } else {
        File.Copy(oldPath, newPath);
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("content-length", f2.Length.ToString());
        Response.TransmitFile(newPath);
        Response.End();
    }
}
else
{
    Label20.Visible = true;
    Label20.Text = "Excel Template not found! Please Contact IT Department with this message.";
}

每次我运行代码时,它都会在Response.TransmitFile(newPath);抱怨文件没有找到。

我正在运行Windows 7 Pro, x64 With Visual Studio 2013 Update 2。这是。net 4.5 Web Project.

但是我只是在三行之前复制了它。我做错了什么?

文件被复制,然后抱怨它不存在

这就是问题所在:

@"C:''Users''akclark.DOMAIN-A''Documents''Visual Studio 2013''WebSites''Quote''"

逐字字符串+双反斜杠=带双反斜杠的文件路径,FileInfoResponse.TransmitFile可以区别对待

用下面一行

替换你的代码
if (f2.Exists)
            {
                File.Delete(newPath);
            }
            else
            {
                File.Copy(oldPath, newPath);
                f2 = new FileInfo(newPath);
                Response.ContentType = "application/vnd.ms-excel";
                Response.AddHeader("content-length", f2.Length.ToString());
                Response.TransmitFile(newPath);
                Response.End();
            }

你的代码有响应。内容长度AddHeader(",f2.Length.ToString ());并且在复制之前初始化f2,因此它无法找到并抛出未找到的错误文件。