【问题标题】:Where to save files in a Server and make it accessible VB.NET在服务器中保存文件的位置并使其可访问 VB.NET
【发布时间】:2015-12-20 04:50:06
【问题描述】:

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

我决定将 MySQL 用于数据库,该数据库已启动并正在运行,但我仍然想知道将由不同用户上传的图像保存在哪里最好,以便所有用户都可以访问它。

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

谢谢

【问题讨论】:

    标签: vb.net client-server


    【解决方案1】:

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

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

    在 codeproject http://www.codeproject.com/Articles/437937/Save-and-Retrieve-Image-from-a-SQL-Server-Database 上有一些关于如何保存和检索图像的好例子
    Store picture to database; retrieve from db into Picturebox

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

    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
    

    类似这样的东西(从数据库中取回数据 - PbPicture 在这个例子中是一个图片框)

    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()
    

    【讨论】:

    • 谢谢... 使用该系统的用户最多可能有 10 个,但每个用户最多可以上传 20, 000 个文件。所以,从长远来看,我需要一些可行的东西,也许将文件保存在磁盘上并将部分存储在数据库中。每个文件的大小最大为 10kb。
    • 发现文件实际上最大 5kb
    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2021-09-06
    相关资源
    最近更新 更多