Процесс не может получить доступ к файлу, потому что он используется другим процессом в файловом потоке Web.api - PullRequest
1 голос
/ 19 марта 2019

У меня есть этот кусок кода:

[AcceptVerbs("POST")]
[Route("api/doc/ImageUpload")]
public HttpResponseMessage ImageUpload()
{
    try
    {
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/imageUpload");
        var provider = new MultipartFormDataStreamProvider(root);

        Request.Content.ReadAsMultipartAsync(provider);

            foreach (MultipartFileData file in provider.FileData)
            {

                if (string.IsNullOrEmpty(file.Headers.ContentDisposition.FileName))
                {
                    return Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted");
                }

                string fileName = file.Headers.ContentDisposition.FileName;
                if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
                {
                    fileName = fileName.Trim('"');
                }
                if (fileName.Contains(@"/") || fileName.Contains(@"\"))
                {
                    fileName = Path.GetFileName(fileName);
                }

                using (FileStream stream = File.Open(file.LocalFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    //do something
                }
            }
    }  
}

А этот Почтальон зовет:

enter image description here

Я вижу, что файл создается в папке:

* +1012 *enter image description here

Но при попытке фактически использовать файл в файловом потоке и сохранить его как правильный jpeg или png, я получаю IOException. Также я замечаю, что сохраненный файл - 32 КБ, но файл, который я пытаюсь загрузить, - 120 КБ.

...