1

OpenERP REST API にアクセスするための python bottle を使用して api を作成しました。

私の問題は、画像ファイルをアップロードしてOpenERPのバイナリフィールドに書き込むときに発生します

「allow_noneが有効になっていない限り、Noneをマーシャリングできません」というraise TypeErrorをスローします

ここに私のコードをアップロードしました

from bottle import get, post, run,request,error,route,template
@route('/')
def index():
   return'''Welcome'''


@error(500)
def custom500(error):
   return 'Error while validating data.'

# Advisor Creation Start #

@get('/advisor') # or @route('/advisor')

def advisor_form():
    form ='''<form method="POST" action="/advisor" enctype="multipart/form-data">
            Photo:<input name="photo" type="file"/><br>
            <input type="submit" />
          </form>'''
    return form

@post('/advisor') # or @route('/advisor', method='POST')
def advisor_submit():
   import xmlrpclib
   username = 'uname'
   pwd = 'pwd'      
   dbname = 'db'    

   photo  = request.files.get('photo')
   print photo,"L:K<:L"
   sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
   try:
      uid = sock_common.login(dbname, username, pwd)
   except("Error username or password"):
      print "sock_common error"
   sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
   res={
     'consultant_photo':photo
   }

   advisor_id = sock.execute(dbname, uid, pwd, 'res.advisor', 'create', res)
   return 'Advisor Created!'
   # Advisor Creation End #
 run(host='localhost', port=8000)
4

1 に答える 1

3

これは、アップロードされたファイルを OpenERP に送信する準備が整う前に行う必要があることです。

ファイルポインタを取得する

photo  = request.files.get('photo')

ファイルデータを読む

photo_data = photo.file.read()

base64でエンコードする

base64.b64encode(photo_data)

これで、このデータを openerp に渡すことができます

于 2013-05-29T07:04:50.457 に答える