我想從我的android手機上傳mp3文件到php服務器。我使用下面的代碼將其編碼爲字符串,然後使用httpPost上傳(我沒有在這篇文章中包含代碼以保持它的地位)。mp3從android上傳php
File audioStorageDir = new File(Environment.getExternalStorageDirectory().getPath(), "LEADVoices");
InputStream is;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
System.out.println("The name of the audio file " + audioName);
is = new FileInputStream(audioStorageDir.getAbsolutePath() + File.separator + audioName);
int bytesAvailable = is.available();
int maxBufferSize = 1000;
byte[] buffer = new byte[bytesAvailable];
int bytesRead = is.read(buffer, 0, bytesAvailable);
while (bytesRead > 0) {
baos.write(buffer, 0, bytesAvailable);
bytesAvailable = is.available();
bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
bytesRead = is.read(buffer, 0, bytesAvailable);
}
System.out.println("Uploaded an audio file");
byte[] bytes = baos.toByteArray();
String encodedAudio = Base64.encodeToString(bytes, Base64.DEFAULT);
choiceList.add(new BasicNameValuePair("audio",encodedAudio));
is.close();
baos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("bytearrayoutputstream error1");
} catch (IOException e) {
e.printStackTrace();
System.out.println("bytearrayoutputstream error2");
}
在服務器端,我使用下面的代碼來解碼字符串。但是,無法播放在服務器端生成的mp3文件。任何人都知道什麼是錯的?
$audio = 'myfile.mp3';
$encodedString = $_POST['audio'];
$dir = '../myfolder/Audios';
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$decoded=base64_decode($encodedString);
$filepath = $dir.'/'.$audio;
file_put_contents($filepath,$decoded);
}
「似乎是空的」?你有沒有打擾到實際檢查?例如'var_dump($ _ POST)'看看會發生什麼,'echo strlen($ decode)'等等...?另外,你的android代碼中沒有任何地方會爲你的POST數據設置一個名稱,所以可能你的_POST數組中沒有'voice_recording'項。 –
@Marc B看到我的編輯,在我甚至完成了我的文章並自己閱讀之前發佈了這條評論。 – user2242590
評論仍然有效,請執行'var_dump($ _ POST)'來查看您實際收到的內容。 –