2016-07-22 62 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

根據您提供的定義,看起來您需要傳遞一個字典數組,每個字典都提供uploads參數的字段名稱/ ID,文件名和文件的base64編碼。所以,如果我有一張表格,其中字段ID爲19的情況下將顏色名稱記錄到名爲「color」的字段,並將字段id爲21的字段名稱爲「sample image」的字段樣本圖像記錄下來,我相信我的方法調用會是這樣的:

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) 

或者,如果你使用的字段名稱:

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就是你剛纔使用任何構造該模塊具有實例化對象。

+0

我的理解是uploads參數需要有3個值 - field_Id /字段名,文件名和base64編碼文件在XML中傳遞,如下所示[link](https://www.quickbase.com/api -guide/add_record.html#base64-encoded_file_attachment) – speedchase

+0

你是對的。我更新了我的答案,以反映該方法需要一個字典數組而不是單個字典,並且該字典有三個鍵/值對,而不是我最初編寫的那個。 –

+0

完美!它像一個魅力。現在我可以通過本地計算機上的掃描圖像文件迭代此API請求以上傳到Quickbase。 – speedchase