0

わかりました。ファイルを処理するこのコードは、単純な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);

UploadType一部のドキュメントでは、awaitを使用すると読み取りプロセスが非同期になると述べているため、フォームフィールドが==更新される場合は、ファイルがフォルダに保存された後で削除したいので、ファイルがいつ保存されたかを知る必要があるという問題がありますが、この行を試すときのように

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

画像はまだ保存されておらず、画像が存在しないというエラーが発生したので、私の質問は、画像がディレクトリに準備されていることをどのように確認または確認できるかということです。非同期プロセスが終了したことをどのように知ることができますか、これに関する助けに感謝します!!

4

1 に答える 1

1

File.Exists使用する必要がある方法です。

余談Path.Combineですが、連結を使用してパスを作成する代わりに、を使用する必要があります。

于 2013-02-27T15:24:40.437 に答える