C# 文件。删除删除原始文件和转换文件
这是我的API方法,它将.caf文件上载到服务器,转换为.mp3并删除.caf文件。但问题是原始文件和转换后的文件都将被删除,而不仅仅是原始文件C# 文件。删除删除原始文件和转换文件,c#,asp.net,file,file-io,asp.net-web-api,C#,Asp.net,File,File Io,Asp.net Web Api,这是我的API方法,它将.caf文件上载到服务器,转换为.mp3并删除.caf文件。但问题是原始文件和转换后的文件都将被删除,而不仅仅是原始文件 [HttpPost] [ActionName("UploadCompetitionEntry")] public async Task<HttpResponseMessage> UploadCompetitionEntry([FromUri]string folderName) { if (!Requ
[HttpPost]
[ActionName("UploadCompetitionEntry")]
public async Task<HttpResponseMessage> UploadCompetitionEntry([FromUri]string folderName)
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
}
string path = System.Web.Hosting.HostingEnvironment.MapPath("~/" + folderName);
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(path);
var task = Request.Content.ReadAsMultipartAsync(provider);
// Log exceptions
await task.ContinueWith(t =>
{
if (t.IsFaulted)
{
// Log t.Exception
}
});
var bodyPart2 = provider.FileData.Where(p => p.Headers.ContentDisposition.Name.Replace("\"", string.Empty) == folderName).FirstOrDefault();
if (bodyPart2 != null)
{
string savedFile2 = bodyPart2.LocalFileName;
string originalFile2 = bodyPart2.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
string uniqueFilename = string.Format(@"{0}", Guid.NewGuid());
string newFile2 = uniqueFilename + Path.GetExtension(originalFile2);
// Copy file and rename with new file name and correct extension
FileInfo file2 = new FileInfo(savedFile2);
file2.CopyTo(Path.Combine(path, newFile2), true);
file2.Delete();
if (folderName == "music")
{
//converting .caf to .mp3 and creating a new .mp3 file
MediaFuncs.ConvertToMp3(Path.Combine(path, newFile2), uniqueFilename);
//deleting the .caf file
FileInfo file3 = new FileInfo(Path.Combine(path, newFile2));
file3.Delete();
}
}
return Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage<Object> { success = true, message = "Media Uploaded" });
}
我做错什么了吗?如果有人知道任何其他删除原始文件的方法,请告诉我,我整天都在为此绞尽脑汁:(
编辑:我放置了一个断点并选中了。我想我正在转换完成之前删除.caf文件。因为当我在调用converter方法之后和删除文件之前放置断点时,.mp3没有被删除
那么现在如何暂停删除直到转换完成?在删除源文件之前,您需要等待转换完成 为此,您只需拨打以下电话:
p1.WaitForExit();
在ConvertToMp3
的末尾
请参见MSDN上的。您有2个
Delete()
方法。您是否尝试过调试和检查其中哪一个确实删除了哪个文件?此外,您是否确定首先生成了一个.mp3
文件?音频文件首先存储时没有任何扩展名,并且有一个奇怪的名称,因此我正在复制该文件并添加扩展名并删除旧的无扩展名Dinsion文件。它在这里工作得很好…我检查过了,旧文件被删除了。但是在那之后,当文件夹中同时有转换文件和原始文件,并且我试图删除原始文件时,它会同时删除它们。@Oded Yaa当我删除删除原始文件的代码时,.caf和.mp3文件都是在folder@Oded和Blachshma嘿,我在编辑中写了一些最新的发现,请检查一下,如果你有任何想法,请告诉我。
p1.WaitForExit();