【问题标题】:How to write program to do file transfer based on based omniORBpy如何编写基于omniORBpy的文件传输程序
【发布时间】:2012-12-11 17:01:42
【问题描述】:

我现在正在编写一个 Corba 项目来在客户端和服务器之间进行文件传输。 但是当我想将文件从客户端上传到服务器时,我遇到了麻烦。

我定义的 IDL 是:

interface SecretMessage
{
    string send_file(in string file_name, in string file_obj);
};

并且我在客户端代码中实现了上传功能:

f = open('SB.docx', 'rb')
data = ''
for piece in read_in_chunks(f):
    data += piece

result = mo.send_file('2.docx', data)

如果文件是纯txt文件,没有问题。 但如果文件是 jpg、doc 或除 txt 之外的其他文件,则它确实有效。 它给了我错误:

omniORB.CORBA.BAD_PARAM: CORBA.BAD_PARAM(omniORB.BAD_PARAM_WrongPythonType, CORBA.COMPLETED_NO)

问题出在哪里?

【问题讨论】:

    标签: python corba omniorb


    【解决方案1】:

    我认为这是因为默认情况下,omniORB 希望查看字符串的 ASCII 数据。尝试将您的 IDL 更改为此

    interface SecretMessage
    {
        typedef sequence<octet> OctetSequence;
        string send_file(in string file_name, in OctetSequence file_obj);
    };
    

    您可以保持您的 Python 客户端代码相同,因为在 IDL 到 Python 的映射中,八位字节序列映射到 Python 字符串。

    【讨论】:

      猜你喜欢
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2011-09-21
      • 2016-05-15
      相关资源
      最近更新 更多