我正在使用 SalesforceMobileSDK-Android 来开发Android应用程序。我能够开发一个非常基本的Android应用程序,在我的应用程序中,我能够从salesforce帐户获取联系人,帐户,潜在客户等详细信息,并对这些数据执行crud操作。 在我的Android应用程序中,我有一个名为 uploadFile 的按钮,现在想要点击该按钮上传一个音频文件,我无法找到任何其他api,这将有助于我在Salesforce上传它从我的Android客户端应用程序。
如果有任何示例网址或源代码或任何有用的资源,请提供给我。
由于
答案 0 :(得分:1)
您必须尝试base64
对文件进行编码并向POST
端点发送/services/data/v26.0/sobjects/attachment/{parent record id}/body
请求。我自己没有这样做,但有一些很好的例子:
答案 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();