Member 11183217 Ответов: 1

C# загрузить обновление изображения в папку server.mappath....?


привет друзья,


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


Ошибка:"
The process cannot access the file '1.png' because it is being used by another process.
"


для этой ошибки вместо
var directory = new DirectoryInfo(path);
              directory.Delete(true);
эту линию я уже использовал
Directory.Delete(path);
но Агин я получаю ошибку вроде

Ошибка:
The directory is not empty.


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

public static string ImageToServerPath(student[] student)
       {
           DataImage image = DataImage.TryParse(student[0].path);
           MemoryStream ms = new MemoryStream(image.RawData);
           Bitmap BMP = new Bitmap(image.Image);

           string configPath = WebConfigurationManager.AppSettings["Path"];

           string path =configPath+""+student[0].studentId+"\\";

           if (!Directory.Exists(path))
           {
               Directory.CreateDirectory(path);
           }
           else
           {
               Directory.Delete(path);
               Directory.CreateDirectory(path);
           }

           FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, path);

           if (SecurityManager.IsGranted(writePermission))
           {
               int imagename = 1;
               System.Drawing.Image img = new System.Drawing.Bitmap(ms);
               img.Save(path + student[0].studentId + ".png", ImageFormat.Png);
               path = path + "" + imagename + ".png";
           }
           return path;
       }

1 Ответов

Рейтинг:
4

RickZeeland

Я думаю, тебе нужно закрыть дверь. MemoryStream после ее использования:

using (MemoryStream ms = new MemoryStream(image.RawData);) 
{  
    BMP = new Bitmap(image.Image);
}
Я бы также взглянул на:
DataImage image = DataImage.TryParse(student[0].path);
Поскольку у меня нет вашего исходного кода, я не могу сказать, что там происходит ...


Richard Deeming

Я подозреваю DataImage это тот класс, который я опубликовал три недели назад:
Проверьте тип строки base64 (image) с помощью C#[^]

Если он не был изменен, он не должен иметь ничего общего с блокировкой файлов.