在服务器中保存文件并使其可访问VB.NET的位置

在服务器中保存文件并使其可访问VB.NET的位置,vb.net,client-server,Vb.net,Client Server,我有一个桌面应用程序(VB.NET和MS Access),工作非常好,只能在一台计算机上使用(没有共享数据库)。我正在研究应用程序一次可供5到10人使用的可能性(可能是客户端/服务器) 我决定对数据库使用MySQL,该数据库已经启动并运行,但我仍在考虑如何保存将由不同用户上传的图像,以便所有用户都可以访问 编辑: 它应该存储在服务器的共享文件夹中吗?如果这是最好的方法,请问我如何才能做到这一点 谢谢如果您已经迁移到MySQL(如果您只有5到10个用户,我会保存到MS sql express,但由

我有一个桌面应用程序(VB.NET和MS Access),工作非常好,只能在一台计算机上使用(没有共享数据库)。我正在研究应用程序一次可供5到10人使用的可能性(可能是客户端/服务器)

我决定对数据库使用MySQL,该数据库已经启动并运行,但我仍在考虑如何保存将由不同用户上传的图像,以便所有用户都可以访问

编辑: 它应该存储在服务器的共享文件夹中吗?如果这是最好的方法,请问我如何才能做到这一点


谢谢

如果您已经迁移到MySQL(如果您只有5到10个用户,我会保存到MS sql express,但由于大小限制,您可能会留在MySQL),您可以将图片存储在数据库中

MySQL支持BLOB数据类型(用于存储二进制数据)

有一些很好的例子说明了如何在codeproject上保存和检索图像

但基本思想是这样的(存储数据)

类似这样的东西(为了从数据库中获取数据,本例中PbPicture是一个picturebox)


谢谢使用该系统的用户最多可以上传10个文件,但每个用户最多可以上传20000个文件。所以,从长远来看,我需要一些可行的方法,也许可以将文件保存在磁盘上,并将部分存储在数据库中。每个文件的最大大小将为10kb。发现文件的最大大小实际上为5kb
Dim mstream As New System.IO.MemoryStream()
PbPicture.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim arrImage() As Byte = mstream.GetBuffer()

FileSize = mstream.Length
Dim sqlcmd As New MySqlCommand
Dim sql As String
mstream.Close()

sql = "insert into [your table]  (picture, filename, filesize) 
                           VALUES(@File, @FileName, @FileSize)"

Try
    conn.Open()
    With sqlcmd
        .CommandText = sql
        .Connection = conn
        .Parameters.AddWithValue("@FileName", filename)
        .Parameters.AddWithValue("@FileSize", FileSize)
        .Parameters.AddWithValue("@File", arrImage)

        .ExecuteNonQuery()
    End With
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    conn.Close()
End Try
Dim adapter As New MySqlDataAdapter
adapter.SelectCommand = Cmd

data = New DataTable

adapter = New MySqlDataAdapter("select picture from [yourtable]", conn)
commandbuild = New MySqlCommandBuilder(adapter)
adapter.Fill(data)

Dim lb() As Byte = data.Rows(0).Item("picture")
Dim lstr As New System.IO.MemoryStream(lb)
PbPicture.Image = Image.FromStream(lstr)
PbPicture.SizeMode = PictureBoxSizeMode.StretchImage
lstr.Close()