DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: power71483
今日帖子: 11
在线用户: 20
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/6 20:48:04
标题:
snap怎么实现BLOB字段的写 浏览:1209
加入我的收藏
楼主:  snap怎么实现BLOB字段的写
服务端存储文件到表
----------------------------------------------
沈阳-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/6 22:06:19
1楼: snap 
snap  英[snæp]
美[snæp]
vt.  折断; 猛地咬住; 呵斥;
vt.  拍照; 用子母扣扣; [棒球]快速传(球); 拍…的快照;
n.  (树枝等的) 突然折断; 严厉的话; 突然的撕咬; 尤指关上或断裂的声音)啪嗒声;
----------------------------------------------
(C)(P)Flying Wang
作者:
男 homejun (homejun) ★☆☆☆☆ -
盒子活跃会员
2017/12/7 8:05:06
2楼: 可能说的是datasnap
----------------------------------------------
-delphi新资讯站 http://www.delphigear.cn
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 8:28:17
3楼: datasnap怎么实现BLOB字段的写
服务端存储文件到表
----------------------------------------------
沈阳-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 8:36:45
4楼: 从来不用 datasnap
我们都是用 rest webservice rosdk 等 第三方。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wanlgrm (么么) ▲▲▲▲▲ -
普通会员
2017/12/7 8:38:07
4楼: 不知道是不是说把文件写到表里面存着。我读书少看的不是很明白,如果是跟snap没关系,ADO,fireDac都可以做的到。
----------------------------------------------
-只会复制粘贴!
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 8:59:59
5楼: 我怀疑楼主是老外,否则,他写的内容,不能那么难懂。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 744840146 (744840146) ▲▲▲▲▲ -
普通会员
2017/12/7 10:25:18
6楼: 客户端直接base64当字符串操作
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 12:28:01
7楼: 人家 楼主 可能是老外,正在翻译 客户端 服务器 这些描述。
他 目前 无法说清楚 他是 服务器 代码 还是 客户端代码。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 12:49:14
8楼: datasnap怎么实现BLOB字段的写
客户端文件存储到表后
服务端存储该条记录到对应表 
、、----------
或服务端直接收客户端的文件后 再存储到对应表BLOB字段 已经实现
----------------------------------------------
沈阳-
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 12:50:35
9楼: 包括客户端 及其服务端 两部分代码
----------------------------------------------
沈阳-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 13:33:28
10楼: 你 8 楼说 已经实现了,那就 OK 了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 lsh341999 (虫子) ★☆☆☆☆ -
普通会员
2017/12/7 13:34:15
10楼: SQL格式:
UPDATE Z_ITEM_CLASS SET
NAME='-',
BCODE='MJ',
NCODE='5',
ECODE='',
IMAGE=0x89504E470D0A......--这里就是BLOB字段,当没有图片时可NULL或0x00
WHERE ID='铆接'
AND PARENT='待包装'
----------
流转SQL的存储格式代码:
Function StreamToSqlStr(FData:Pointer):String;
var
    Index:integer;
    buf:array[0..16383]  of byte;
    PInt,AInt:Integer;
begin
  Result:='';
  TMemoryStream(FData).Seek($00,soFromBeginning);
  AInt:=0;
  repeat
    Pint:=TMemoryStream(FData).Read(buf, sizeof(buf));
    for Index := 0 to Pint - 1 do
      Result:=Result+Format('%.2x',[buf[Index]]);
    AInt:=AInt+Pint;
  until AInt=TMemoryStream(FData).Size;
  if Result='' then
  Result:='00';
  Result:='0x'+Result;
end;
效果:
此帖子包含附件:
GIF 图像
大小:3.26M
----------------------------------------------
就怕想不到,没有做不到的
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 15:11:04
11楼: 函数如何调用
Function StreamToSqlStr(FData:Pointer):String;

FData:Pointer 如何赋值
----------------------------------------------
沈阳-
作者:
男 lsh341999 (虫子) ★☆☆☆☆ -
普通会员
2017/12/7 16:03:58
12楼: TMemoryStream类型的
比如
Var
  iStream:TMemoryStream;
Begin
  iStream:=MemoryStream.Create
  Try
    iStream.loadfi....//加载文件
    或者从数据集中获取二进制数据流
    进行SQL脚本拼接如插入,更新
    StreamToSqlStr(iStream)
  Finally
    FreeAndNil(iStream)
  End;
End;
----------------------------------------------
就怕想不到,没有做不到的
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 16:57:02
13楼: procedure Tfrmpromain.Button4Click(Sender: TObject);
var
  fs: TFileStream;
 fstr, f:string;
begin   // 存
 f:='d:\1.txt';
 fs := TFileStream.Create(f, fmOpenRead);
 fs.Position := 0;
 fstr:=StreamToSqlStr(fs);
 Datas.pgftb.Edit;
 Datas.pgftb.FieldByName('nm').AsString:='1s.txt';
 Datas.pgftb.FieldByName('fs').AsString:=fstr;    //BLOB字段
 //好像我写的不对 读时出错

 Datas.pgftb.Post;
 fs.Free;
end;
----------------------------------------------
沈阳-
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 16:58:30
14楼: 取文件
 TBlobField(Datas.pgftb.FieldByName('fs')).SaveToFile('d:\2.txt');
----------------------------------------------
沈阳-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 17:02:35
15楼: 14 楼的代码,是存在反向操作的。
file 和 Stream 各有一对操作。
Save Load。

关键是 8 楼 说 服务器端,已经实现了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 17:10:20
16楼: 我是直接把流传到服务器端
服务器端直接把流保存到表里
----------------------------------------------
沈阳-
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 17:11:00
17楼: 按10楼的方法
服务器端该如何实现呢
----------------------------------------------
沈阳-
作者:
男 ozhy1 (ozhy1) ★☆☆☆☆ -
普通会员
2017/12/7 17:12:26
18楼: 字符串如何再转为流
----------------------------------------------
沈阳-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/12/7 17:57:59
19楼: 我觉得 你 16楼的做法,非常的明智。
----------------------------------------------
(C)(P)Flying Wang
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行140.625毫秒 RSS