Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

我通过java插入图片但是在web以及client里面显示不出来



  • 我用的openerp-allinone v5.0
    通过写了一个java的程序添加一幅图片进openERP数据库但是,添加完毕后在页面以及client图片都显示不出来
    代码如下:
    [i]PreparedStatement ps = conn.prepareStatement("update res_partner set x_logo=?,website='wwwwwwwwww' where name='Axelor' ");
    InputStream in;
    try {
    in = new FileInputStream("d:/pic.jpg");
    ps.setBinaryStream(1,in,in.available());
    ps.executeUpdate();
    ps.close();
    } catch (Exception e) {
    System.out.println("插入图片出错");
    e.printStackTrace();
    }[/i]

    [[i] 本帖最后由 popkar77 于 2009-6-8 16:46 编辑 [/i]]



  • 我用的openerp-allinone v5.0
    通过写了一个java的程序添加一幅图片进openERP数据库但是,添加完毕后在页面以及client图片都显示不出来
    代码如下:
    [i]PreparedStatement ps = conn.prepareStatement("update res_partner set x_logo=?,website='wwwwwwwwww' where name='Axelor' ");
    InputStream in;
    try {
    in = new FileInputStream("d:/pic.jpg");
    ps.setBinaryStream(1,in,in.available());
    ps.executeUpdate();
    ps.close();
    } catch (Exception e) {
    System.out.println("插入图片出错");
    e.printStackTrace();
    }[/i]

    [[i] 本帖最后由 popkar77 于 2009-6-8 16:46 编辑 [/i]]



  • 貌似 logo 是用的附件?



  • 哦,。。。我用的不是附件

    [attach]188[/attach]obiect

    [attach]189[/attach]view


  • 管理员

    OpenERP中的 image 和 binary 对象一般会用base64 encode 后存到数据库中。

    直接对数据库存取的方法并不可取,可以使用xml-rpc界面来通讯。具体参见 [url]doc.openerp.com[/url]



  • 现在想通过XML-RPC来实现,就先按照[url=doc.openerp.com/developer/6_22_XML-RPC_web_services/index.html#java]http://doc.openerp.com/developer/6_22_XML-RPC_web_services/index.html#java[/url]里面关于java的部分来写,但是现在却出现了另外一个问题,就是不知道通过哪个端口地址来使用Xml-rpc。
    所以我怀疑是我的openERP没有开启XML-rpc,因为我打开client的时候选择了Xml-rpc的时候他说连接不到
    [attach]190[/attach]

    [[i] 本帖最后由 popkar77 于 2009-6-10 10:28 编辑 [/i]]



  • 5.0.0.3 版本,我证实过..xmlrpc 接口有问题...

    建议使用 5.0.1.x 版本...


  • 管理员

    你的意思是用默认的net-rpc(8070)可以连上?
    xml-rpc的端口设置可以通过服务器的命令行参数来指定:
    <code>
    openerp-server.py --port=8069 -s
    </code>
    也可以直接修改服务器配置文件
    你的系统应该是windows, 那在你的用户文件夹下(即 c:document and settingsXXX)有一个openerp-server.conf的文件,你可以按需设置。



  • 我现在已经成功使用java通过XML-RPC来进行object对象的create,但是问题仍然回到了图片怎样存进去,我试过使用本地地址但是不成功,使用网络地址在web浏览的时候还出现了BUG。

    HashMap hash = new HashMap();
    hash.put("name", "HELLO");
    hash.put("relation", "regular");
    hash.put("logo", "D:\pic.jpg");

    Object[] params = new Object[] {"mda",id,"admin", "res.partner", "create", hash};
    client_obj.execute("execute", params);

    其他的成功插入,但是图片不知道怎么插入。:L


  • 管理员

    logo--> x-logo, 应该还是base64 encoding的问题,不了解Java,以下是Python的方法,参考一下:
    [code]args = [('name', '=', 'Axelor'),]
    ids = sock.execute(dbname, uid, pwd, res.partner, 'search', args)

    values['x_logo'] = base64.encodestring(open(imgfile, 'rb').read())
    results = sock.execute(dbname, uid, pwd, res.partner, 'write', ids, values)

    [/code]



  • 找到了方法了。。。:lol 谢谢大家
    [code]]InputStream photoStrean = new FileInputStream(file);

    byte[] bytes = new byte[photoStrean.available()];
    photoStrean.read(bytes);
    photoStrean.close();

    BASE64Encoder encoder = new BASE64Encoder();

    HashMap hash = new HashMap();
    hash.put("name", "hello with JPG!!");
    hash.put("logo", encoder.encode(bytes));

    Object[] ids = new Object[]{50};

    Object[] params = new Object[] {"mda",id,"admin", "res.partner", "write",ids, hash};
    Object result = client_obj.execute("execute", params);
    }
    catch(Exception e){
    System.out.println("插入图片出错");

    }[/code]

    [[i] 本帖最后由 popkar77 于 2009-6-11 15:19 编辑 [/i]]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待