2017-04-11 28 views
1

我想一些数据和音频文件保存到我的解析服务器的数据库,这里是我使用的代码:Android的 - 如何上传音频文件使用Parse SDK

audioURLString = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "_message.mp4"; 

的文件被存储到我的设备的本地根文件夹,我可以使该文件存在,它实际上是一个有效的MP4文件,我可以发挥它在那里找到它,现在这里是我用来保存在解析代码:

ParseObject myObj = new ParseObject("Chats"); 

byte[] data = audioURLString.getBytes(); 
ParseFile audioFile = new ParseFile("message.mp4", data); 
audioFile.saveInBackground(); 

myObj.put("message", audioFile); 

然后如果我检查我的Parse数据库,我可以找到message.mp4文件和下载广告,但它根本不是一个有效的mp4文件,只有4Kb,我无法使用QuickTime播放它,也无法使用MediaPlayer播放。

所以,我认为我的byte[] data转换是错误的,没有任何人知道如何得到字节的数据指出,audioURLString(这是一个简单的String),并成功上载解析完整的文件?

非常感谢!

回答

0

想通了!

这里是我的音频文件转换成字节数组的代码:

// Save sound 
byte[] soundBytes; 
try { 
    InputStream inputStream = 
    getContentResolver().openInputStream(Uri.fromFile(new File(audioURLString))); 
    soundBytes = new byte[inputStream.available()]; 
    soundBytes = toByteArray(inputStream); 

    ParseFile audioFile = new ParseFile("message.mp4", soundBytes); 
    myObj.put("message", audioFile); 

} catch(Exception e) { e.printStackTrace(); } 
+0

什么是'toByteArray(的inputStream);'? – grant

+0

它是从视频的输入流构建的一个字节数组 – cubycode

+0

将代码复制并粘贴到我的活动中时,toByteArray是唯一没有用红色字母解析的东西。 – grant

相关问题