0

我的代码是这样的

 public static void Deleter()
 {
     HttpContext.Current.Response.Clear();
     HttpContext.Current.Response.ContentType = "application/pdf";
     HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + "name" + ".pdf");
     HttpContext.Current.Response.TransmitFile("~/media/pdf/" + "name" + ".pdf");


     if (FileExists("/media/pdf/" + "name" + ".pdf"))
     {
         System.IO.File.Delete("D:/Projects/09-05-2013/httpdocs/media/pdf" + "name" + ".pdf");
     }
     HttpContext.Current.Response.End();

 }

执行完整个代码后,我仍然可以在文件夹中看到 name.pdf。没有抛出错误。谁能告诉我出了什么问题?

4

2 回答 2

3

字符串连接

"D:/Projects/09-05-2013/httpdocs/media/pdf" + "name" + ".pdf"

产量

D:/Projects/09-05-2013/httpdocs/media/pdfname.pdf

哪个是你删除的文件,和哪个不一样

D:/Projects/09-05-2013/httpdocs/media/pdf/name.pdf
于 2013-05-24T09:20:42.650 回答
2

您的连接路径会导致错误的地址,用于Path.Combine组合两条路径。当前它将是:

D:/Projects/09-05-2013/httpdocs/media/pdfname.pdf
                                     ^^^^^^
                                    //Missing slash. 

改为使用:

System.IO.File.Delete(Path.Combine("D:/Projects/09-05-2013/httpdocs/media/pdf" 
                              , "name"+ ".pdf"));

或者,如果您想使用字符串连接,则在第一个字符串的末尾添加一个正斜杠,例如:

System.IO.File.Delete("D:/Projects/09-05-2013/httpdocs/media/pdf/" + "name" + ".pdf");

还可以考虑使用Server.MapPath而不是绝对路径。

于 2013-05-24T09:20:22.280 回答