4

SalesForce の学習と django を使用したアプリの開発を始めました。

ファイルをセールスフォースにアップロードする際に支援が必要です。そのために、シンプルなセールスフォースこれを読み、残りとSOAP APIを使用してファイルをアップロードするのに役立ちます。

私の質問は、simple-salesforce を使用して 1 つ以上のファイルをアップロードするにはどうすればよいですか?

4

2 に答える 2

3

ファイルのアップロードに使用するコード ブロックを次に示します。

def load_attachments(sf, new_attachments):
    '''
        Method to attach the Template from the Parent Case to each of the     children.
        @param: new_attachments the dictionary of child cases to the file name of the template
    '''
    url = "https://" + sf.get_forced_url() + ".my.salesforce.com/services/data/v29.0/sobjects/Attachment/"
    bearer = "Bearer " + sf.get_session_id()
    header = {'Content-Type': 'application/json', 'Authorization': bearer}

    for each in new_attachments:
        body = ""
        long_name = str(new_attachments[each]).split(sep="\\")
        short_name = long_name[len(long_name) - 1]
        with open(new_attachments[each], "rb") as upload:
            body = base64.b64encode(upload.read())
        data = json.dumps({
                           'ParentId': each,
                           'Name': short_name,
                           'body': body
                          })
        response = requests.post(url, headers=header, data=data)
        print(response.text)

基本的に、ファイルを送信するには、リクエスト モジュールを使用し、ポスト トランザクションを介してファイルを送信する必要があります。ポスト トランザクションには、リクエストの送信先 URL、ヘッダー情報、およびデータが必要です。

ここで、sf は simple-salesforce 初期化によって返される のインスタンスです。私のインスタンスはカスタム ドメインを使用しているため、それを処理するために simple-salesforce で独自の関数を作成する必要がありました。私はこれを get_forced_url() と呼んでいます。注: URL は、使用しているバージョンによって異なる場合があります [v29.0 の部分が変更される場合があります]。

次に、ベアラーとヘッダーをセットアップします。

次は、親 ID からアップロードしたいファイルへのマップ内の添付ファイルごとに新しい添付ファイルを送信するループです。これは重要なことです。添付ファイルには親オブジェクトが必要なので、ParentId を知る必要があります。添付ファイルごとに本文を空白にし、添付ファイルの長い名前と短い名前を作成します。次に、重要な部分。添付ファイルでは、ファイルの実際のデータは base-64 バイナリ配列として保存されます。したがって、ファイルはバイナリとして開く必要があるため、「rb」を使用して base-64 にエンコードします。

ファイルが Base-64 バイナリに解析されたら、ParentId が親オブジェクトのオブジェクト ID、Name が短い名前、body が Base-64 でエンコードされたデータの文字列である json 文字列を作成します。

次に、ファイルがヘッダーとデータとともに URL に送信されます。次に、応答を印刷して、それが起こっているのを見ることができます。

于 2016-09-19T17:42:24.230 に答える