上传并替换相同的图像文件(如果它已经存在)



我有一个名为PB_Company_Logo的图片框我有一个名为btn_Save的按钮在这个按钮中我有一个function它将PB_Company_Logo中的图像保存为current_directory/images

Public Sub save_PB(PB_Name As PictureBox)
    Dim filename As String = "company_logo.png"
    Dim path As String = Directory.GetCurrentDirectory() & "images"
    Dim filename_path As String = System.IO.Path.Combine(path, filename)
    If (Not System.IO.Directory.Exists(path)) Then
        System.IO.Directory.CreateDirectory(path)
        PB_Name.Image.Save(filename_path)
    Else
        PB_Name.Image.Save(filename_path)
    End If
End Sub

问题是,在某些情况下,用户将上传新的company_logo.png。我希望系统将新图片的上传视为替换原来的company_logo.png

我认为这行代码中的错误意味着该文件目前在使用(locked)中,因此不能被替换。

Else
   PB_Name.Image.Save(filename_path)
End If

当你用图像文件加载一个pictureBox控件时,ide (vs)会对该文件加一个锁。当您在设计时将pictureBox控件的image属性设置为文件时,就会发生这种情况。

可以使用FileStream对象。例子:

    Dim fs As System.IO.FileStream
' Specify a valid picture file path on your computer.
fs = New System.IO.FileStream("C:WINNTWebWallpaperFly Away.jpg", 
     IO.FileMode.Open, IO.FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
fs.Close()

在您完成了解决方案之后,您可以使用System.IO.File.Exists(img)命名空间来检查图片是否存在。

示例:这检查通过的图像是否已经存在,如果存在则替换它。

 Dim imageStr As String = "~/images/name.jpg"
  If System.IO.File.Exists(imageStr) Then
    Image1.ImageUrl = "~/images/name.jpg"
End If

最新更新