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