如何使用android开发在salesforce上传音频文件?

时间:2012-12-12 11:53:33

标签: android api rest salesforce

我正在使用 SalesforceMobileSDK-Android 来开发Android应用程序。我能够开发一个非常基本的Android应用程序,在我的应用程序中,我能够从salesforce帐户获取联系人,帐户,潜在客户等详细信息,并对这些数据执行crud操作。 在我的Android应用程序中,我有一个名为 uploadFile 的按钮,现在想要点击该按钮上传一个音频文件,我无法找到任何其他api,这将有助于我在Salesforce上传它从我的Android客户端应用程序。

如果有任何示例网址或源代码或任何有用的资源,请提供给我。

由于

2 个答案:

答案 0 :(得分:1)

您必须尝试base64对文件进行编码并向POST端点发送/services/data/v26.0/sobjects/attachment/{parent record id}/body请求。我自己没有这样做,但有一些很好的例子:

  1. http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_sobject_insert_update_blob.htm - 使用与json消息不同的方法。
  2. http://blogs.developerforce.com/developer-relations/2011/09/using-binary-data-with-rest.html - 如果您可以创建服务器端REST服务。
  3. 检查Salesforce专用堆栈站点上的资源,例如https://salesforce.stackexchange.com/questions/1301/image-upload-to-chatter-post
  4. 最后但并非最不重要 - 检查Salesforce社区主席,例如http://boards.developerforce.com/t5/APIs-and-Integration/inserting-an-attachment-via-REST/td-p/322699

答案 1 :(得分:0)

主要是服务器端你必须关注上传文件时,客户端你可以有这样的方法(只是得到想法,它不是一个完整的功能代码):

 FileInputStream fileInputStream = new FileInputStream(new File(selectedPath) );
 // open a URL connection to the Servlet
 URL url = new URL(urlString);
 // Open a HTTP connection to the URL
 conn = (HttpURLConnection) url.openConnection();
 // Allow Inputs
 conn.setDoInput(true);
 // Allow Outputs
 conn.setDoOutput(true);
 // Don't use a cached copy.
 conn.setUseCaches(false);
 // Use a post method.
 conn.setRequestMethod("POST");
 conn.setRequestProperty("Connection", "Keep-Alive");
 conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
 dos = new DataOutputStream( conn.getOutputStream() );
 dos.writeBytes(twoHyphens + boundary + lineEnd);
 dos.writeBytes("Content-Disposition: form-data; name:\"uploadedfile\";filename=\"" + selectedPath + "\"" + lineEnd);
 dos.writeBytes(lineEnd);
 // create a buffer of maximum size
 bytesAvailable = fileInputStream.available();
 bufferSize = Math.min(bytesAvailable, maxBufferSize);
 buffer = new byte[bufferSize];
 // read file and write it into form...
 bytesRead = fileInputStream.read(buffer, 0, bufferSize);
 while (bytesRead > 0)
 {
  dos.write(buffer, 0, bufferSize);
  bytesAvailable = fileInputStream.available();
  bufferSize = Math.min(bytesAvailable, maxBufferSize);
  bytesRead = fileInputStream.read(buffer, 0, bufferSize);
 }
 // send multipart form data necesssary after file data...
 dos.writeBytes(lineEnd);
 dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
 // close streams
 Log.e("Debug","File is written");
 fileInputStream.close();
 dos.flush();
 dos.close();