以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 二进制列 怎么实现web上传图片呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=150038) |
-- 作者:李孝春 -- 发布时间:2020/5/19 10:54:00 -- 二进制列 怎么实现web上传图片呢? 二进制列 怎么实现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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/5/19 11:36:00 -- SQLInsertFile这个用法不支持临时表。需要使用sql更新,比如 Dim cmd As new SQLCommand cmd.ConnectionName = "test" cmd.CommandText = "Insert Into test (图片) Values(?)" Dim ImageByte() As Byte = System.IO.File.ReadAllBytes("D:\\test.JPG") \'读取文件流,并将读到的二进制数据放入数组ImageByte中, cmd.Parameters.Add("@图片", ImageByte) cmd.ExecuteNonQuery [此贴子已经被作者于2020/5/19 11:36:57编辑过]
|
-- 作者:李孝春 -- 发布时间:2020/5/19 14:18:00 -- 回复:(有点蓝)SQLInsertFile这个用法不支持临时表。... 老师 按照你提供的思路 运行下面的无结果 我web上传图片不是零时表 是已经加载到项目里的 以下内容是专门发给有点蓝浏览 [此贴子已经被作者于2020/5/19 15:11:58编辑过]
|
-- 作者:李孝春 -- 发布时间:2020/5/19 14:45:00 -- 回复:(有点蓝)SQLInsertFile这个用法不支持临时表。... 以下内容是专门发给有点蓝浏览 [此贴子已经被作者于2020/5/19 15:14:27编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/5/19 15:33:00 -- 使用cmd.ExecuteReader获得的表就是临时表 |
-- 作者:有点蓝 -- 发布时间:2020/5/19 15:36:00 -- Dim dr As Row = Tables("web上传图片").AddNew() dr.save 必须先保存,才能插入二进制数据
|
-- 作者:有点蓝 -- 发布时间:2020/5/19 15:39:00 -- 在web服务端千万不要使用Tables("xxx").Current这种用法,因为多人使用的使用,A新增了一行,然后B也新增了一行,A再去取Current,有可能就是B新增的行,而不是A新增的行 |
-- 作者:李孝春 -- 发布时间:2020/5/19 15:55:00 -- 回复:(有点蓝)在web服务端千万不要使用Tables("xxx... 老师 以下内容是专门发给有点蓝浏览 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) \'插入文件 ‘ 启用这个后文件名称和二进制都能够如下图对应到一行 \'cmd.CommandText = "Insert Into web上传图片(图片) Values(?)" \'Dim ImageByte() As Byte = System.IO.File.ReadAllBytes(wj) \'读取文件流,并将读到的二进制数据放入数组ImageByte中, \'cmd.Parameters.Add("@图片", ImageByte) \'cmd.ExecuteNonQuery 这个部分启用的时候 保存的二进制文件会单独再新增一行【求解,怎么实现如上红色部分实现的一行效果】 \' 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编辑过]
|
-- 作者:飞飞 -- 发布时间:2020/5/19 15:57:00 -- 不撒谎,狐表的技术人员是最认真的 |
-- 作者:有点蓝 -- 发布时间:2020/5/19 16:40:00 -- 既然都有了一个dr,又何必多此一举?下面这段代码全部去掉即可 Dim dr1 As DataRow = Tables("web上传图片").Current.DataRow ‘’这个部分老师有什么好的建议么?根据老师的建议该怎么改比较合适呢? If dr1.RowState = DataRowState.Added Then \'如果是新增行,必须先保存才能插入文件 dr1.Save() End If 我只是提供一个例子,不代表可以直接抄,Insert Into本来就是插入的用法,如果要更新数据,学一下sql:http://www.foxtable.com/webhelp/topics/0690.htm |