2017-04-11 31 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

相關問題