System.IO.File.delete(path) verwijdert meer dan één bestand.

Status
Niet open voor verdere reacties.

florisdev

Nieuwe gebruiker
Lid geworden
24 mrt 2011
Berichten
4
Ik zit met het volgende probleem.
In mijn applicatie kan men een video uploaden van elk formaat.
Die video komt terecht in Contents/original.
Daarna zal de server de video converteren via FFmpeg naar .flv.
De geconverteerde video komt terecht in Contents/flv.

Nu wil ik na de conversie het originele bestand verwijderen. Ik gebruik daarmee System.IO.File.delete(path) waarin het pad de locatie van de video in de map Contents/original voorstelt.

Allemaal goed en wel, hij delete die file goed. Maar hij delete ook het bestand in de map flv. Waarom delete hij twee bestanden?

Wat moet ik doen zodat hij alleen het bestand in de Contents/original map verwijdert?
 
Kun je de precieze code dan even geven? Bij mij werkt deze functie namelijk wel gewoon.
 
De code

Hier delen van de code:
Code:
// Saving the original file on the server.
filename_input = System.IO.Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath("~/Contents/original/") + filename_input);

// Root Path of the web application
string rootPath = Server.MapPath(Request.ApplicationPath);
// The paths to the tools FFmpeg.exe
string FFMPEGPath = HttpContext.Current.Server.MapPath("~\\ffmpeg\\ffmpeg.exe");
// The original files will be temporarily stored in contents\original.
string inputPath = rootPath + "\\contents\\original";
// The converted files will be stored in contents\flv.
string outputPath = rootPath + "\\contents\\flv";

// Naming both input and outpath filenames.
// Output file will get a timestamp to make it unique on the server.
filename_input = System.IO.Path.GetFileName(FileUploadControl.FileName);
filename_output = GetTimestamp(DateTime.Now) + "_" + System.IO.Path.GetFileName(FileUploadControl.FileName);
filename_output = filename_output.Substring(0, filename_output.IndexOf('.')) + ".flv";

//Conversion with FFmpeg on commandline.
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = FFMPEGPath;
p.StartInfo.Arguments = "-i " + rootPath + "Contents\\original\\" + filename_input + " -sameq -ar 44100 -f flv " + rootPath +"Contents\\flv\\" + filename_output;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();

// Deleting the original file.
string path = Server.MapPath("~/Contents/original/") + filename_input;
System.IO.File.Delete(path);
 
Het probleem ligt elders.

Ondertussen kwam ik al te weten dat het probleem elders ligt. De System.IO.File.delete) werkt zoals het moet. Het probleem is echter dat de conversie pas gebeurt als men van pagina veranderd. Met andere woorden, het originele bestand wordt opgeladen, het conversie commando werkt maar wordt nog niet uitgevoerd (terwijl het wel zou moeten) en het verwijdert het originele bestand. Als ik de code om het bestand te verwijderen weghaal dan lukt de hele conversie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan