2016-07-22 10 views
1

以下のコードはPython Quickbaseモジュールの一部ですが、これはずっと更新されていません。以下に示す関数のヘルプテキストは、パラメータを渡してファイルをアップロードする方法(実際にはbase64でエンコードされている値)で渡される方法については明確ではありません。Quickbaseモジュールadd_record()関数ファイルアップロードパラメータ?

def add_record(self, fields, named=False, database=None, ignore_error=True, uploads=None): 
    """Add new record. "fields" is a dict of name:value pairs 
    (if named is True) or fid:value pairs (if named is False). Return the new records RID 
    """ 
    request = {} 
    if ignore_error: 
     request['ignoreError'] = '1' 
    attr = 'name' if named else 'fid' 
    request['field'] = [] 
    for field, value in fields.iteritems(): 
     request_field = ({attr: to_xml_name(field) if named else field}, value) 
     request['field'].append(request_field) 
    if uploads: 
     for upload in uploads: 
      request_field = (
       {attr: (to_xml_name(upload['field']) if named else upload['field']), 
       'filename': upload['filename']}, upload['value']) 
      request['field'].append(request_field) 

    response = self.request('AddRecord', database or self.database, request, required=['rid']) 
    return int(response['rid']) 

誰かが私がレコードを追加するためにパラメータを渡す必要がありますどのように私を助けることができます。

答えて

1

指定した定義に基づいて、フィールド名/ ID、ファイル名、およびuploadsパラメータのファイルのbase64エンコーディングをそれぞれ提供する辞書の配列を渡す必要があるようです。ですから、フィールドIDが19の「color」というフィールドに色の名前を記録し、field idが21の「sample image」というフィールドにサンプル画像を記録したテーブルがあれば、私は

my_color_file = #base64 encoding of your file 
my_fields = {'color': 'Seafoam Green'} 
my_uploads = [{'field': 'sample_image', 'filename':'seafoam_green.png', 'value': my_color_file}] 
client.add_record(fields=my_fields, named=True, uploads=my_uploads) 

clientはあなたが前にこのモジュールが持っているものは何でもコンストラクタ使用してインスタンス化だけオブジェクトです:あなたはフィールド名を使用している場合、

my_color_file = #base64 encoding of your file 
my_fields = {'19': 'Seafoam Green'} 
my_uploads = [{'field': 21, 'filename':'seafoam_green.png', 'value': my_color_file}] 
client.add_record(fields=my_fields, uploads=my_uploads) 

または:メソッド呼び出しは、何かのようになります。

+0

ここで示すように、アップロードパラメータにfield_Id/field name、filename、base64でエンコードされたファイルをXMLに渡す必要があります(https://www.quickbase.com/api -guide/add_record.html#base64-encoded_file_attachment) – speedchase

+0

あなたは正しいですか?メソッドが単一の辞書の代わりに辞書の配列を予期しており、辞書には最初に書いたものの代わりに3つのキー/値の組があることを反映するように答えを更新しました。 –

+0

パーフェクト!それは魅力のように働いた。これでQuickbaseにアップロードするために、自分のローカルコンピュータ上のスキャンしたイメージファイルに対してこのAPIリクエストを繰り返すことができます。 – speedchase

関連する問題