Web API处理上传的文件以便删除

本文关键字:文件 删除 API 处理 Web | 更新日期: 2023-09-27 18:01:28

好的,我有这段代码,处理通过一个简单的web表单上传的文件

CustomMultipartFormDataStreamProvider provider = new CustomMultipartFormDataStreamProvider(@"C:'inetpub'wwwroot'myapp'Images");
//var provider = new MultipartFormDataStreamProvider(@"C:'inetpub'wwwroot'myapp'Images");
var Image = "";
var Dir = "";
var CurrentPath = "";
string UploadType = "";
string ImageName = "";
// Read the form data.
await Request.Content.ReadAsMultipartAsync(provider);
// Show all the key-value pairs.
foreach (var key in provider.FormData.AllKeys)
{
    foreach (var val in provider.FormData.GetValues(key))
   {
      if (key == "uploadType") UploadType = val;
      if (key == "imageName") ImageName = val;
      //Trace.WriteLine(string.Format("{0}: {1}", key, val));
   }
}
foreach (MultipartFileData file in provider.FileData)
{
   //Debug.WriteLine(file.Headers.ContentDisposition.FileName);
   //Debug.WriteLine("Server file path: " + file.LocalFileName);
   Image = Path.GetFileName(file.LocalFileName);
   Dir = Path.GetDirectoryName(file.LocalFileName);
   CurrentPath = file.LocalFileName;
}
if (UploadType == "update")
{
   File.Delete(Dir + "''" + Image);
   File.Move(CurrentPath, Dir + "''" + Image);
   Imagen = ImageName;
}
return Request.CreateResponse(HttpStatusCode.OK, Image);

正如一些文档提到的使用await将导致读取过程异步,我的问题是,我需要知道文件何时保存到文件夹中,因为我想在UploadType表单字段为==更新后删除它,但似乎当尝试这行

File.Delete(Dir + "''" + Image);

图像还没有保存,我得到了一个错误,图像不存在,所以我的问题是,我怎么能告诉或确定图像在目录中准备好了?我怎么能告诉异步进程结束,感谢对此的任何帮助!!

Web API处理上传的文件以便删除

File.Exists是你应该使用的方法。

Aside您应该使用Path.Combine而不是使用连接构建路径。