比较表的列与服务器上文件夹中的图像- VB.NET / SQL Server

w1e3prcc  于 2023-01-08  发布在  .NET
关注(0)|答案(2)|浏览(87)

在我的产品注册表单中,我有一个“照片”按钮,用于在图片框中显示产品照片1。
当用户单击photo按钮时,代码将比较Products表的prdCod列和服务器上Photo文件夹中图像的filename,如果找到,它将在picturebox1中显示相应的图像。
照片按钮,执行以下命令:

Private Sub btnPhoto_Click(sender As Object, e As EventArgs) Handles btnPhoto.Click
        
        Dim IdProduto As String = prdCod   ** column in Products table that will be used for the search image in the Photos folder

        If File.Exists("\\server\cmg\projects\Photos" & IdProduto) Then   ** Search the image from the Photos folder on the server
           PictureBox1.Image = Image.FromFile("\\server\cmg\projects\Photos" & IdProduto)
        End If
    End Sub

在线上

If File.Exists("\\server\cmg\projects\Photos" & IdProduto)

我有两个问题:

  • 在与prdCod的比较中读取了映像的文件类型,我只需要比较映像的文件名就可以了;
  • 当图像的文件名有前导零时,比较也不起作用。
    注解1:这些图像将不会保存在Products表中,它们将已经在服务器上的Photos文件夹中,并且仅用于在picturebox1中显示。
    注解2Photos文件夹中图像的文件名将始终为数字,并且不会重复,例如:\
1.png, 2.png, 3.bmp, 4.jpg, 5.bmp, 6.jpeg...

如何仅比较Photos文件夹中的映像文件名,而不比较文件类型,并且忽略前导零?

vuktfyat

vuktfyat1#

没有简单的解决方案。你基本上必须迭代文件夹中的所有文件,使用例如Path.GetFileNameWithoutExtension,并在比较之前删除前导零。
一个更好的方法是重新设计工作流程,并将相应的真实的文件名(甚至是完全限定的文件名)与产品代码沿着存储。

os8fio9y

os8fio9y2#

可以使用GetFiles方法并对扩展名使用通配符。

Private Sub AddImageIfExists(idProduto As String)
    Dim folder As New DirectoryInfo("\\server\cmg\projects\Photos")
    If folder.Exists Then
        Dim file = folder.GetFiles($"{idProduto}.*").FirstOrDefault
        If file IsNot Nothing Then
            PictureBox1.Image = Image.FromFile(file.FullName)
        End If
    End If
End Sub

这将添加照片,如果存在。
要调用该方法:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim IdProduto As String = prdCod
    AddImageIfExists(IdProduto)
End Sub

相关问题