Computechsoft Ответов: 1

Изображение не удаляется из папки


Когда я удаляю изображение из папки "появляется сообщение об ошибке
(Потому что он используется другим процессом).

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

Dim Get_Image_From_Product_Image As New SqlCommand("SELECT Business_Image FROM ImageDB.dbo.Administrator_Account Where Employee_Code = '" & CmbUserCode & "'", sqlcon)

            Dim Get_Image_FromProduct_Image = Get_Image_From_Product_Image.ExecuteScalar().ToString()

 PicturePath = Application.StartupPath & "\Product_Image"

  System.IO.File.Delete(PicturePath & "\" & Get_Image_FromProduct_Image)

CHill60

Ошибка вполне понятна - у вас есть файл, открытый в другом процессе, или если это происходит на сервере кто-то имеет открытый файл.
Кроме того, ваш код уязвим для атаки SQL - инъекций - не объединяйте строки для создания sql-команд- вместо этого используйте параметры

Richard Deeming

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Dim Get_Image_From_Product_Image As New SqlCommand("SELECT Business_Image FROM ImageDB.dbo.Administrator_Account Where Employee_Code = @Employee_Code", sqlcon)
Get_Image_From_Product_Image.Parameters.AddWithValue("@Employee_Code", CmbUserCode.SelectedItem)

1 Ответов

Рейтинг:
6

OriginalGriff

Как говорит CHill60, сообщение об ошибке довольно ясно - файл, который вы пытаетесь записать, используется. Почти наверняка, он используется вашим собственным программным обеспечением - так что начните с проверки везде, где вы читаете или пишете этот файл. Если вы не закроете (и предпочтительно не избавитесь) весь поток, который вы используете, когда закончите с ними, они останутся открытыми, и вы не сможете использовать этот файл снова.
То же самое относится и к загрузке изображения из файла: исходный файл остается заблокированным до тех пор, пока изображение не будет удалено или ваше приложение не закроется, в зависимости от того, что наступит раньше.