String ls_path, ls_file_name, ls_filter, ls_err
Int li_ret, li_loop, li_i, li_file, li_bytes
Long ll_file_len
Blob lb_file, lb_read, lb_pic

// 选择图片文件
ls_filter = "jpg File (*.jpg),*.jpg,bmp file(*.bmp),*.bmp,gif file(*.gif),*.gif"
li_ret = GetFileOpenName("选择头像", ls_path, ls_file_name, "png", ls_filter)
If Isnull(li_ret) Or li_ret < 0 Then
    Messagebox("提示", "打开文件错误!")
    Return
End If

// 读取文件二进制数据
ll_file_len = FileLength(ls_path)
// 5KB
If ll_file_len > 5120 Then
    Messagebox("提示", "文件大小不能超过5KB!")
    Return
End If
// FileRead每次最多读取32765bytes
If ll_file_len > 32765 Then
    li_loop = (ll_file_len / 32755) + 1
Else
    li_loop = 1
End If
    
li_file = FileOpen(ls_path, StreamMode!, Read!, LockRead!)
For li_i = 1 To li_loop
    li_bytes = FileRead(li_file, lb_read)
    If Isnull(li_bytes) Then
        Messagebox("提示", "读取文件错误!")
        Return
    End If
    If li_bytes > 0 Then
        lb_file = lb_file + lb_read
    End If
Next
FileClose(li_file)

// 设置图片
p_avatar.setpicture(lb_file)

// 保存图片
li_i = 0
SELECT COUNT(*) INTO :li_i FROM T_SYS_USER_INFO WHERE USER_GH = :gs_operid;
If li_i > 0 Then
    UPDATEBLOB T_USER SET AVATAR_PIC = :lb_file WHERE USER_GH = :gs_operid;
    If Sqlca.Sqlcode <> 0 Then
        ls_err =  Sqlca.Sqlerrtext
        ROLLBACK;
        Messagebox("提示", "头像保存失败:" + ls_err)
        Return
    End If
    ls_file_name = gs_operid + '_' + String(pub_fc_getdate(), "yyyy-mm-dd")
    UPDATE T_USER SET AVATAR_NAME = :ls_file_name WHERE USER_GH = :gs_operid;
    If Sqlca.Sqlcode <> 0 Then
        ls_err =  Sqlca.Sqlerrtext
        ROLLBACK;
        Messagebox("提示", "头像名称保存失败:" + ls_err)
        Return
    End If
End If
COMMIT;
// 从数据库读取图片
li_i = 0
SELECT COUNT(*) INTO :li_i FROM T_SYS_USER_INFO WHERE USER_GH = :gs_operid;
If li_i > 0 Then
    SELECTBLOB AVATAR_PIC INTO :lb_pic FROM T_USER WHERE USER_GH = :gs_operid;
    p_1.setpicture(lb_pic)
End If

// 图片较小 sqlserver 可用 varbinary(字段长度)类型来保存

PowerBuilder -- 保存图片的更多相关文章

  1. PowerBuilder笔记

    powerbuilder中怎样新建一个pbl文件 在创建pbw之后,右键单击pbw,点新建,弹出对话矿,按图操作,就能创建pbl 主程序入口: 主程序入口代码: // Profile ahzbmysq ...

  2. HTML 保存图片到本地

    具体方法有两种  一种是 利用canvas的 toDataUrl  和Html5 里面的 <a>标签里面的 Download 属性 虽然 Download 的兼容性不怎么样  但是在文章后 ...

  3. Android 保存图片到SQLite

    [转:原文] Resources res = getResources(); Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.ico ...

  4. PowerBuilder 简介及应用 - 数据库系统原理

    PowerBuilder 是一种企业级数据库前端应用和多层体系结构开发工具,友好的用户界面,功能强大的数据窗口,是一个集成开发环境. PB 的特点 采用面向对象的编程方法和事件驱动的工作原理. 支持跨 ...

  5. JS/HTML 保存图片到本地:HTML <a> download 属性

    JS如何保存图片到本地呢?自己百度一下吧! 这里想要说的是,可以利用 HTML 的 <a> 标签 来是实现保存图片到本地的功能,参考代码如下: <a href="http: ...

  6. [Android Pro] Android保存图片到系统图库

    http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/ http://blog.csdn.net/x ...

  7. IOS UIImagePickerController 保存图片到 相册

    // 异步下载图片 dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); disp ...

  8. 利用PBFunc在Powerbuilder中解析Json对象

    利用PBFunc工具在Powerbuilder解析json,只需要调用getattribute方法来获取 解析unicode格式的json: n_pbfunc_json lnv_json lnv_js ...

  9. 利用PBfunc在Powerbuilder中使用https获取微信的AccessToken

    在前篇中讲解了使用PBFunc在Powerbuilder自己进行http的GET和POST操作. 本篇简单用代码演示下https的微信AccessToken的获取: n_pbfunc_http lnv ...

随机推荐

  1. LeetCode OJ-- Flatten Binary Tree to Linked List **

    https://oj.leetcode.com/problems/flatten-binary-tree-to-linked-list/ 二叉树的处理,将二叉树转换成类似一个单链表的东东,并且原地. ...

  2. NYOJ 27.水池数目-DFS求连通块

    水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...

  3. Java面试常问的问题(转载)

    并发.JVM.分布式.TCP/IP协议 1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的.以下简单模拟一个数据结构的连环炮. ...

  4. Css 基础学习

    css 基本选择器 css基本选择器有三种方法 第一种: class选择器 .c1{ color: red;} <div class='c1'>hello world</div> ...

  5. Tmux常用快捷键及命令

    Exported from workflowy! tmux session start/create session- tmux- tmux new-session -s portage listin ...

  6. MVC4 Task.Factory.StartNew 异步调用

    MVC4也添加了一些异步的东西,不过一枝都没有研究过. 工作上遇到了发出一个调用,但是不去管调用结果如何的情况,在谢平师傅的指导下, 写成如下异步方式 Task.Factory.StartNew(() ...

  7. JS请求报错:Unexpected token T in JSON at position 0

    <?php /* 最近做一个ajax validate表单验证提交的代码,在ajax提交的时候 JS请求报错:Unexpected token T in JSON at position 0 描 ...

  8. GPS整数。度分秒转换

    例如30.453280 104.2018怎么把度数转换为度分秒的格式要详细换算方法 例如30.453280°,30.453280°,则有30°0.453280°×60= 27.1968′则有27′0. ...

  9. CSS实现鼠标放图片上显示白色边框+文字描写叙述

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. linux 系统时间硬件时间同步

    1.设置系统时间:date-s 21/05/2016 date -s 08:21:21 2.系统时间同步到硬件时间: clock --systohc