Foxtable(狐表)用户栏目专家坐堂 → 二进制列 怎么实现web上传图片呢?


  共有4819人关注过本帖树形打印复制链接

主题:二进制列 怎么实现web上传图片呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
二进制列 怎么实现web上传图片呢?  发帖心情 Post By:2020/5/19 10:54:00 [显示全部帖子]

二进制列 怎么实现web上传图片呢?
当前无法上传图片文件到二进制列
图片列是二进制列
代码如下:
Dim e As RequestEventArgs = args(0)
Dim wb As New weui
Dim cmd As New SQ LCommand
cmd.C '记得设置数据源名称
cmd.CommandText = "Sel ect Count(*) From {web上传图片}"
Dim Count As Integer = cmd.ExecuteScalar() '获取总的行数
Dim dt As DataTable = cmd.ExecuteReader


Select Case e.Path
    Case "index.htm"
        If e.PostValues.Count = 0 Then
            wb.AddForm("","form1","index.htm")
            With wb.AddInputGroup("form1","ipg1","增加图片")
                .AddInput("单位名称","单位名称","Text") '前一个"姓名"是ID,后一个"姓名"是标题
                .AddInput("所属支部","所属支部","Text")
                .AddInput("姓名","姓名","Text")
                .AddInput("图片类型","图片类型","Text")
                .AddUploader("up1","图片",True) 'True表示允许上传多个文件
            End With
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
            e.WriteString(wb.Build)
        Else
            Dim nms() As String = {"单位名称","所属支部","姓名","图片类型","图片"}
            Dim dr As DataRow = dt.AddNew()
            For Each nm As String In nms
                dr(nm) = e.PostValues(nm)
            Next
            dr.save
            
            
            For Each key As String In e.Files.Keys
                If key = "up1" Then
                    For Each fln As String In e.Files(key)   
                        e.SaveFile(key, fln, ProjectPath & "Attachments\" & fln)   这个部分可以保存图片到指定目录了
                        'dr.Lines("图片") = e.Files(key)
                        dr.DataRows.SQ LInsertFile("图片",ProjectPath & "Attachments\" & fln) '插入文件   想实现上传的图片直接写入图片二进制列里
                    Next
                End If
            Next
            '保存并生成增加成功提示页面
            dr.save()
            With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
                .AddButton("btn1","继续增加","index.htm")
            End With
            e.WriteString(wb.Build)
        End If
        
End Select
[此贴子已经被作者于2020/5/19 11:29:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)SQLInsertFile这个用法不支持临时表。...  发帖心情 Post By:2020/5/19 14:18:00 [显示全部帖子]

老师  按照你提供的思路  运行下面的无结果
我web上传图片不是零时表  是已经加载到项目里的  



以下内容是专门发给有点蓝浏览



[此贴子已经被作者于2020/5/19 15:11:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)SQLInsertFile这个用法不支持临时表。...  发帖心情 Post By:2020/5/19 14:45:00 [显示全部帖子]


以下内容是专门发给有点蓝浏览





[此贴子已经被作者于2020/5/19 15:14:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)在web服务端千万不要使用Tables("xxx...  发帖心情 Post By:2020/5/19 15:55:00 [显示全部帖子]


老师

以下内容是专门发给有点蓝浏览



Dim wb As New weui
Dim cmd As New S QLCommand
cmd.Conn ecti
'cmd.Co mmandText = "Sel ect * From {web上传图片}"
Dim dt As DataTable = cmd.ExecuteReader
Select Case e.Path

    Case "index1.htm"
        If e.PostValues.Count = 0 Then
            wb.AddForm("","form1","index1.htm")
            With wb.AddInputGroup("form1","ipg1","增加图片")
                .AddSelect("单位名称","单位名称","瓮安|") '前一个"姓名"是ID,后一个"姓名"是标题
                .AddSelect("所属支部","所属支部","第一支部|第二支部")
                .AddInput("姓名","姓名","Text")
                .AddSelect("图片类别","图片类别","|会议记录|学习记录|学习心得|其它材料")
                '.AddUploader("up1","图片",True) 'True表示允许上传多个文件              ‘’这个部分启用的时候 可以实现图片上传操作


            End With
            
            With wb.AddInputGroup("form1","ipg2","文件上传") '文件上传                 ‘’这个部分启用的时候无法实现多个文件上传操作【求解】
                With.AddUploader("up1","图片",True) 'True表示允许上传多个文件
                .AllowDelete = True '允许删除
                .Incremental = True '允许重复选择文件或连续拍照
            End With


        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit")
        End With
        e.WriteString(wb.Build)
    Else
        Dim st As New Date(1970,1,1,8,0,0)
        Dim d As Date = cdate("2020-02-01")
        Dim t As Long = (Date.Now - st).TotalSeconds()
        
        Dim nms() As String = {"单位名称","所属支部","姓名","图片类别","图片名称"}
        Dim dr As DataRow = DataTables("web上传图片").AddNew()
        For Each nm As String In nms
            dr(nm) = e.PostValues(nm)
            dr("时间戳")=t
        Next
        dr.Save
        Dim dr1 As DataRow = Tables("web上传图片").Current.DataRow        ‘’这个部分老师有什么好的建议么?根据老师的建议该怎么改比较合适呢?
        If dr1.RowState = DataRowState.Added Then '如果是新增行,必须先保存才能插入文件
            dr1.Save()
        End If

        For Each key As String In e.Files.Keys
            If key = "up1" Then
                For Each fln As String In e.Files(key)
                    Dim wj As String =ProjectPath & "Attachments\" & dr("姓名") & dr("图片类别") & fln
                    e.SaveFile(key,fln,wj)
                    dr.Lines("图片名称") = e.Files(key)
                    
                    dr.SQLInsertFile("图片",wj) '插入文件     ‘
                    启用这个后文件名称和二进制都能够如下图对应到一行
                    
图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
                    'cmd.CommandText = "Insert Into web上传图片(图片) Values(?)"     
                    'Dim ImageByte() As Byte = System.IO.File.ReadAllBytes(wj) '读取文件流,并将读到的二进制数据放入数组ImageByte中,
                    'cmd.Parameters.Add("@图片", ImageByte)
                    'cmd.ExecuteNonQuery
                     这个部分启用的时候 保存的二进制文件会单独再新增一行【求解,怎么实现如上红色部分实现的一行效果】
                    
图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看
                    ' MessageBox.Show(FileSys.GetName(wj))
                Next
                
            End If
        Next
        '保存并生成增加成功提示页面
        dr.save()
        With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
            .AddButton("btn1","继续增加","index1.htm")
        End With
        e.WriteString(wb.Build)
    End If
    
[此贴子已经被作者于2020/5/19 16:20:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)既然都有了一个dr,又何必多此一举?...  发帖心情 Post By:2020/5/19 17:20:00 [显示全部帖子]

                       cmd.Com mandText = "up date {web上传图片} set 图片= Values(?) where 姓名='" & dr("姓名") & "'"
                        Dim ImageByte() As Byte = System.IO.File.ReadAllBytes(wj) '读取文件流,并将读到的二进制数据放入数组ImageByte中,
                        cmd.Parameters.Add("@图片", ImageByte)
                        cmd.ExecuteNonQuery
                        DataTables ("web上传图片").Load()

老师  红色部分提示有错误   我改怎么修正呢?



 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)         ...  发帖心情 Post By:2020/5/19 18:07:00 [显示全部帖子]

灰常感谢

再麻烦老师一下   为什么我用红色部分  无法上传图片呢?
单独用这个.AddUploader("up1","图片",True) '这个就可以上传  但是一次只能选择一张照片



            With wb.AddInputGroup("form1","ipg1","增加图片")
                .AddSelect("单位名称","单位名称","瓮安|") '前一个"姓名"是ID,后一个"姓名"是标题
                .AddSelect("所属支部","所属支部","第一支部|第二支部")
                .AddInput("姓名","姓名","Text")
                .AddSelect("图片类别","图片类别","|会议记录|学习记录|学习心得|其它材料")      
                With wb.AddInputGroup("form1","ipg2","文件上传") '文件上传
                    With.AddUploader("up1","请选择图片",True) 'True表示允许上传多个文件
                    .AllowDelete = True '允许删除
                    .Incremental = True '允许重复选择文件或连续拍照
                    End With
                End With
            End With
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)参考:http://www.foxtable.com/mobi...  发帖心情 Post By:2020/5/20 9:55:00 [显示全部帖子]


以下内容是专门发给有点蓝浏览

有点蓝老师  已经按照你建议的帮助内容进行完善,但是还有点问题需要老师多多指导一下   谢谢
访问上面地址 运行出现如下错误:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.1.19.19
错误所在事件:项目,HttpRequest
详细错误信息:
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

出现上述错误之后,选择的多个图片上传的话,默认只有一个图片获取得到了名称,其它的图片名称全部为空,
然后图片二进制列写入的文件  只有第一个选择的图片文件  其它数据行得到的二进制列文件都是默认第一个图片文件
[此贴子已经被作者于2020/5/20 9:56:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)这个业务逻辑本身就有问题,前端一次...  发帖心情 Post By:2020/5/20 10:10:00 [显示全部帖子]

想听听老师的合理建议   哪一种比较高效一些    
是不是另外创建一个附件表  直接附件表关联过来比较合适些呢?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)另外建一个附件表  发帖心情 Post By:2020/5/20 11:49:00 [显示全部帖子]

创建了一个web上传图片附件  表    红色部分会新增两条一样的记录  在web上传图片里面 【待解决】    web上传图片附件已经可以多个文件了

以下内容是专门发给有点蓝浏览



麻烦老师指导下:
当前代码如下:
Dim wb As New weui
Dim cmd As New SQ LCommand
cmd.C o n n e c t i o n N a m e = "智慧党建"
Dim dt As DataTable = cmd.ExecuteReader
Select Case e.Path
    Case "index1.htm"
        If e.PostValues.Count = 0 Then
            wb.AddForm("","form1","index1.htm")
            With wb.AddInputGroup("form1","ipg1","增加图片")
                .AddSelect("单位名称","单位名称","瓮安|") '前一个"姓名"是ID,后一个"姓名"是标题
                .AddSelect("所属支部","所属支部","第一支部|第二支部")
                .AddInput("姓名","姓名","Text")
                .AddSelect("图片类别","图片类别","|会议记录|学习记录|学习心得|其它材料")
                With wb.AddInputGroup("form1","ipg2","文件上传") '文件上传
                    With.AddUploader("up1","请选择图片",True) 'True表示允许上传多个文件
                    .AllowDelete = True '允许删除
                    .Incremental = True '允许重复选择文件或连续拍照
                End With
            End With
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "submit").Attribute= ""
        End With
        wb.AddToast("","tst1", "正在上传",1)
        wb.AddToast("","tst2", "上传成功",0)
        wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
        wb.AppendHTML("<script src='./lib/ajaxform.js'></script>") '引入脚本文件
        e.WriteString(wb.Build)
    Else
        Dim st As New Date(1970,1,1,8,0,0)
        Dim d As Date = cdate("2020-02-01")
        Dim t As Long = (Date.Now - st).TotalSeconds()
        Dim danweimingcheng As String  = e.PostValues("单位名称")
        Dim suoshuzhibu As String  = e.PostValues("所属支部")
        Dim xingming As String  = e.PostValues("姓名")
        Dim tupianleibie As String  = e.PostValues("图片类别")
        cmd.CommandText = "Inse rt Int o web上传图片 (单位名称,所属支部,图片类别,姓名,时间戳) Values(?,?,?,?,?)"
        cmd.Parameters.Add("@单位名称", danweimingcheng)
        cmd.Parameters.Add("@所属支部", suoshuzhibu)
        cmd.Parameters.Add("@图片类别", tupianleibie)
        cmd.Parameters.Add("@姓名", xingming)
        cmd.Parameters.Add("@时间戳", t)
        cmd.ExecuteNonQuery
        
        
        
        
        For Each key As String In e.Files.Keys
            If key = "up1" Then
                For Each fln As String In e.Files(key)
                    Dim wj As String =ProjectPath & "Attachments\" & fln
                    e.SaveFile(key,fln,wj)
                    Dim cmd1 As New SQLCommand
                    cmd1.C
                    cmd1.CommandText = "Ins ert I nto web上传图片附件 (姓名,时间戳,图片名称,图片类别,图片) Values(?,?,?,?,?)"
                    cmd1.Parameters.Add("@姓名", xingming)
                    cmd1.Parameters.Add("@时间戳", t)
                    cmd1.Parameters.Add("@图片名称", FileSys.GetName(wj))
                    cmd1.Parameters.Add("@图片类别", tupianleibie)
                    Dim ImageByte() As Byte = System.IO.File.ReadAllBytes(wj) '读取文件流,并将读到的二进制数据放入数组ImageByte中,
                    cmd1.Parameters.Add("@图片", ImageByte)
                    cmd1.ExecuteNonQuery
                Next
            End If
        Next
        '保存并生成增加成功提示页面
        
        DataTables ("web上传图片").Load()
        DataTables ("web上传图片附件").Load()
        With wb.AddMsgPage("","msgpage","增加成功", "好好学习,天天向上") '生成成功提示页
            .AddButton("btn1","继续增加","index1.htm")
        End With
        e.WriteString(wb.Build)
    End If
    
End Select
[此贴子已经被作者于2020/5/20 12:36:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)        With w...  发帖心情 Post By:2020/5/20 16:00:00 [显示全部帖子]


以下内容是专门发给有点蓝浏览



现在运行基本上可以实现主表新增一条记录  附件表可以对应新增多条对应记录  并且可以检索,在窗口中也可以实现二进制文件的读取与显示。

在web页面中,点击提交后,会提示上传文件失败。数据后台则已经实现了数据的写入和二进制文件的写入,麻烦老师再帮忙看看  上传失败的原因是啥?

 回到顶部
总数 11 1 2 下一页