murkalkiran Ответов: 2

Удалить загруженный файл из физического пути C#


I am trying to upload a file .When file is uploaded, I take some  information from it and then i want to delete it.

I manage to upload it, save it and get the info from it, but when i try to delete it i get the follwing exception "The process cannot access the file 'C:\Data\UploadedDocuments\81741092055.pdf' because it is being used by another process."


Что я уже пробовал:

<pre>public async Task<IActionResult> SendMaillNewsLetter(IFormFile file,string subject,string fileName,string message)
        {
            

            tempGuid = Guid.NewGuid();
            ContactUs objUserContactUs = new ContactUs();
            var fileSavePath = _configuration.RootPath + fileName;
            if (file.Length > 0)
            {
                using (var stream = new FileStream(fileSavePath, FileMode.Create))
                {
                    await file.CopyToAsync(stream);
                }
            }

            List<string> NewsletterSubscriptionList = new List<string>();
            NewsletterSubscriptionList = _UserModel.GetNewsletterSubscriptionList(NewsletterSubscriptionList);
            if(NewsletterSubscriptionList.Count>0)
            {
                
                foreach (string item in NewsletterSubscriptionList)
                {
                    _emailSender.SendEmail(item, "", subject, message, fileSavePath);
                }

                             

                if (System.IO.File.Exists(fileSavePath))
                {
                    try
                    {
                        System.IO.File.Delete(fileSavePath);
                    }
                    catch (Exception ex)
                    {

                    }
                }

            }
            return Ok(new { objUserContactUs });
        }

Kornfeld Eliyahu Peter

Можете ли вы понять, что такое "другой процесс"?
Просто для проверки - вместо того, чтобы использовать блок, открывайте и закрывайте поток "вручную"...

F-ES Sitecore

Удалите "_emailSender.Строка "SendEmail", и если файл удален нормально, то это что - то внутри вашего emailSender, которое держит ссылку на открытый файл.

murkalkiran

Ф-Эс компания
сказал, что его холиндинг в _emailSender.Отправка электронных писем отключена отправка электронных писем отключена логика после отправки почты я освободил
var msg = new MailMessage();
любить
сообщение.Вложения.Располагать();

murkalkiran

после удаления _emailSender.SendEmail его удаление,но мне нужно отправить почту и удалить,еще одна вещь ,которую я заметил, это то, что я не могу удалить файл вручную также, когда приложение запущено, если я остановлю приложение и попытаюсь удалить файл вручную его удаление.как я могу решить эту проблему?

2 Ответов

Рейтинг:
0

OriginalGriff

Наиболее вероятным процессом, использующим его, является вы - проверьте код, в котором вы сохраняете файл, и убедитесь, что вы правильно закрываете и удаляете все файловые потоки, которые вы используете для его создания, прежде чем пытаться скопировать / удалить его.

Большой вопрос: "Зачем вы вообще сохраняете его, если собираетесь удалить?" Загрузка файлов обычно принимается в виде байтового массива или потока, так зачем же их вообще сохранять?


murkalkiran

мне нужно отправить письмо с вложением загруженного файла ,поэтому я сохраняю папку, а затем прикрепляю файл из ее пути, есть ли какой-либо альтернативный способ сделать это, пожалуйста, сообщите спасибо.

Рейтинг:
0

murkalkiran

Вопрос решается следующим образом @

F-ES Sitecore 
сказал, что его холиндинг в _emailSender.Отправка электронных писем отключена отправка электронных писем отключена логика после отправки почты я освободил
var msg = new MailMessage();

любить
msg.Attachments.Dispose();
спасибо