Ich habe versucht, eine Möglichkeit zum Hochladen, Herunterladen und Löschen einer PDF-Datei zu erstellen. Der Upload und die Download-Funktion funktionieren einwandfrei, aber wenn ich versuche, das PDF zu löschen, funktioniert es nicht so, wie ich es möchte.

Es funktioniert, wenn ich dieses Formular verwende:

File.Delete(@"C:\Users\Donovan\1_Test.pdf");

Aber es funktioniert nicht, wenn ich das versuche:

File.Delete(@"~\1_Test.pdf");

Ich möchte einen Weg finden, wie die zweite Codezeile funktioniert, da ich in einem Team arbeite und wir nicht denselben Dateipfad verwenden.

c#
-2
Donovan 18 Apr. 2018 im 10:56

6 Antworten

Beste Antwort

Versuche dies. Ich denke es funktioniert: D.

File.Delete(Server.MapPath("~/") + "1_Test.pdf");
0
Piet Piet 18 Apr. 2018 im 10:03

Verwenden Sie Environment.GetFolderPath, um das Home-Verzeichnis des Benutzers zu finden.

string home = Environment.GetFolderPath(Environment.SpecialFolder.UseProfile);
File.Delete(Path.Combine(home, "1_Test.pdf"));

Möglicherweise möchten Sie die Datei auch in den Ordner für temporäre Dateien legen. Sie finden diesen Ort mit Path.GetTempPath. (Beachten Sie, dass Windows temporäre Dateien nicht automatisch bereinigt. Sie müssen also immer noch alles löschen, was Sie dort abgelegt haben, nachdem Sie damit fertig sind.)

1
Wim Coenen 18 Apr. 2018 im 08:07

Wenn Sie alle den Benutzerpfad verwenden, können Sie wie folgt vorgehen:

System.IO.File.Delete(
    Path.Combine(
         Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), 
         "1_Test.pdf"
    )
);
0
2mas 18 Apr. 2018 im 08:07

Sie können es leider nicht mit ~ zum Laufen bringen. Dies funktioniert nur als relativer Pfad für Webanwendungen.

Wir verwenden eine lokale Konfigurationsdatei für unsere Anwendung, in der jeder Entwickler seine eigenen Einstellungen speichert und diese unabhängig von anderen Entwicklern ändern kann.

Abhängig von Ihrer Anwendung (Web, Desktop, Mobile, Windows, Linux, was auch immer) können Sie ein Konfigurationsobjekt schreiben und es füllen oder d. H. Appsettings in web.config für diesen Zweck verwenden.

var basePath = Config.FileBase;
File.Delete(Path.Combine(basePath, "\1_Test.pdf"));
0
Chrᴉz says reinstate Monica 18 Apr. 2018 im 08:08

Eine andere Methode:

File.Delete(Environment.ExpandEnvironmentVariables("%USERPROFILE%\\1_Test.pdf"));
0
i486 18 Apr. 2018 im 09:10

Haben Sie darüber nachgedacht, die * .pdf-Dateien in eine Datenbank zu stellen?

0
Erkam 18 Apr. 2018 im 11:34