def save_blobs(fields, validators=None):
    if validators is None:
        validators = [
            validate_min_size,
            # validate_file_type,
            # validate_max_size,
        ]
    results = BlobUploadResultSet()
    i = 0
    for name, field in fields:
        value = field.stream.read()
        result = BlobUploadResult(
            name=re.sub(r'^.*\\', '', field.filename.decode('utf-8')),
            type=field.mimetype,
            size=len(value),
            field=field,
            value=value)
        if validators:
            for fn in validators:
                if not fn(result):
                    result.successful = False
                    result.error_msg = MSG_INVALID_FILE_POSTED
                    logging.warn('Error in file upload: %s', result.error_msg)
                else:
                    result.blob_key = write_to_blobstore(
                        result.value, mime_type=result.type, name=result.name)
                    if result.blob_key:
                        result.successful = True
                    else:
                        result.successful = False
            results.append(result)
        else:
            result.blob_key = write_to_blobstore(
                result.value, mime_type=result.type, name=result.name)
            logging.error('result.blob_key: %s', result.blob_key)
            if result.blob_key:
                result.successful = True
            else:
                result.successful = False
            results.append(result)
        i += 1
    return results
Returns a list of `BlobUploadResult` with BlobKey, name, type, size for
dataset/ETHPy150Open gregorynicholas/flask-gae_blobstore/flask_gae_blobstore.py/save_blobs