2016-03-19 16 views
0

ネイティブAndroidアプリでSalesforce SDK(4.1.x)を使用しています。 RestClient.sendAsyncメソッドを使用して、フォームデータをカスタムオブジェクトに投稿します。その部分は正常に動作しています。今、モバイルユーザーが撮影した写真をアップロードして添付する必要があります。 RestClientにはuploadFileメソッドがあることがわかります。これは正しい方法ですか?その場合は、アップロードしたファイルをカスタムフォームデータにどのようにして接続しますか?Android用Salesforce Mobile SDKを使用してファイルをアップロードするにはどうすればよいですか?

答えて

1

私はこれを考え出した。まず、次のようにして親オブジェクト(メインフォームデータ)を作成します。

request = RestRequest.getRequestForCreate(apiVersion, objectType, fields); 
client.sendAsync(restRequest, new RestClient.AsyncRequestCallback() {... 

onSuccessメソッドでは、新しいオブジェクトのIDをレスポンスから取得します。 JSONオブジェクトとIDを取得する方法を示す多くの例があります。この親に武装して、添付ファイルを作成できるようになりました。コードは次のようになります。

private void postImageAsAttachment(String parentId, String title) { 
    Map<String, Object> fields = new HashMap<String, Object>(); 
    fields.put("Name", title); 
    fields.put("ParentId", parentId); 
    fields.put("Body", ImageHelper.getBase64FromImage(mCurrentPhotoPath)); 

    RestRequest request = null; 
    try { 
     request = RestRequest.getRequestForCreate(apiVersion, "Attachment", fields); 
    } catch (Exception ex) { 
     Log.d(TAG, "sendRequest: ", ex); 
     Toast.makeText(MainActivity.this, "The file upload failed: " + ex.toString(), Toast.LENGTH_LONG).show(); 
    } 
    client.sendAsync(request, new RestClient.AsyncRequestCallback() {... 

Iは、単に画像ファイルをロードImageHelperと呼ばれる単純なクラスを使用して(必要な場合)、画像圧縮を実行し、BASE64は、画像データを符号化しています。その結果、「Attachment」オブジェクトが親オブジェクトの子として作成されます。

私はこれが次の人に役立つことを願っています。

+0

私に完全なコードを教えてください。 – kgandroid

+0

はBasicNetwork.performRequestを与える:https://ap2.salesforce.com/services/data/v36.0/sobjects/Attachment – kgandroid

+0

のための予期しない応答コード400を、私は後で今日これを掘るでしょう。その間、SFのオブジェクトが添付を許可することを確認してください。私たちのオブジェクトが添付ファイルを許可するように設定されていなかったので、最初はエラーが発生しました。オブジェクト/エンティティに対する適切な権限を持っていないユーザーもエラーを受け取りました。 –

関連する問題