如何使用Salesforce Mobile SDK for android上传文件?

时间:2016-03-19 15:44:14

标签: android salesforce salesforce-ios-sdk

我在原生Android应用中使用Salesforce SDK(4.1.x)。我使用RestClient.sendAsync方法将表单数据发布到自定义对象。那部分工作正常。现在我需要上传并附上移动用户拍摄的照片。我看到RestClient有一个uploadFile方法。这是正确的方法吗?如果是,那么如何将上传的文件连接到自定义表单数据?

1 个答案:

答案 0 :(得分:1)

确定。我想通了。首先,使用以下命令创建父对象(主表单数据)。

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

在onSuccess方法中,您将从响应中获取新对象的id。有很多示例显示如何获取JSON对象和id。有了这个parentId,我们现在可以创建附件了。代码看起来像这样。

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() {...

我使用名为ImageHelper的简单类,只需加载图像文件,执行图像压缩(如果需要),base64对图像数据进行编码。结果是&#34;附件&#34; object被创建为父对象的子对象。

我希望这有助于下一个人。