사진업로드는 잘됩니다.

그런데 mp3파일은 되지않습니다


8메가바이트짜리는 아무것도 뜨지않는데

작은용량의 mp3는 이러한 로그가 뜨면서 강제종료됩니다

이유가뭘까요 ㅠ


12-26 16:50:24.040: E/dalvikvm-heap(4443): Out of memory on a 48701808-byte allocation.

12-26 16:50:24.040: I/dalvikvm(4443): "AsyncTask #2" prio=5 tid=14 RUNNABLE

12-26 16:50:24.040: I/dalvikvm(4443):   | group="main" sCount=0 dsCount=0 obj=0x43902d68 self=0x578814b0

12-26 16:50:24.040: I/dalvikvm(4443):   | sysTid=5809 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1468537088

12-26 16:50:24.040: I/dalvikvm(4443):   | schedstat=( 175870825 141609881 308 ) utm=7 stm=10 core=0

12-26 16:50:24.040: I/dalvikvm(4443):   at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:~91)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)

12-26 16:50:24.040: I/dalvikvm(4443):   at libcore.net.http.RetryableOutputStream.write(RetryableOutputStream.java:61)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.io.DataOutputStream.write(DataOutputStream.java:98)

12-26 16:50:24.040: I/dalvikvm(4443):   at com.example.cloud.AndroidUploader.doUpload(AndroidUploader.java:80)

12-26 16:50:24.040: I/dalvikvm(4443):   at com.example.cloud.AndroidUploader.doInBackground(AndroidUploader.java:116)

12-26 16:50:24.040: I/dalvikvm(4443):   at com.example.cloud.AndroidUploader.doInBackground(AndroidUploader.java:1)

12-26 16:50:24.040: I/dalvikvm(4443):   at android.os.AsyncTask$2.call(AsyncTask.java:287)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.util.concurrent.FutureTask.run(FutureTask.java:137)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)

12-26 16:50:24.040: I/dalvikvm(4443):   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)

12-26 16:50:24.045: I/dalvikvm(4443):   at java.lang.Thread.run(Thread.java:856)

12-26 16:50:24.045: W/dalvikvm(4443): threadid=14: thread exiting with uncaught exception (group=0x415d82a0)

12-26 16:50:24.045: E/AndroidRuntime(4443): FATAL EXCEPTION: AsyncTask #2

12-26 16:50:24.045: E/AndroidRuntime(4443): java.lang.RuntimeException: An error occured while executing doInBackground()

12-26 16:50:24.045: E/AndroidRuntime(4443): at android.os.AsyncTask$3.done(AsyncTask.java:299)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.FutureTask.run(FutureTask.java:137)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.lang.Thread.run(Thread.java:856)

12-26 16:50:24.045: E/AndroidRuntime(4443): Caused by: java.lang.OutOfMemoryError

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)

12-26 16:50:24.045: E/AndroidRuntime(4443): at libcore.net.http.RetryableOutputStream.write(RetryableOutputStream.java:61)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.io.DataOutputStream.write(DataOutputStream.java:98)

12-26 16:50:24.045: E/AndroidRuntime(4443): at com.example.cloud.AndroidUploader.doUpload(AndroidUploader.java:80)

12-26 16:50:24.045: E/AndroidRuntime(4443): at com.example.cloud.AndroidUploader.doInBackground(AndroidUploader.java:116)

12-26 16:50:24.045: E/AndroidRuntime(4443): at com.example.cloud.AndroidUploader.doInBackground(AndroidUploader.java:1)

12-26 16:50:24.045: E/AndroidRuntime(4443): at android.os.AsyncTask$2.call(AsyncTask.java:287)

12-26 16:50:24.045: E/AndroidRuntime(4443): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)

12-26 16:50:24.045: E/AndroidRuntime(4443): ... 4 more

12-26 16:50:24.165: E/SpannableStringBuilder(4443): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

12-26 16:50:24.165: E/SpannableStringBuilder(4443): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

12-26 16:50:24.230: E/WindowManager(4443): Activity com.example.cloud.upload_music has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@438f6ee0 that was originally added here

12-26 16:50:24.230: E/WindowManager(4443): android.view.WindowLeaked: Activity com.example.cloud.upload_music has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@438f6ee0 that was originally added here

12-26 16:50:24.230: E/WindowManager(4443): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:407)

12-26 16:50:24.230: E/WindowManager(4443): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:311)

12-26 16:50:24.230: E/WindowManager(4443): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)

12-26 16:50:24.230: E/WindowManager(4443): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)

12-26 16:50:24.230: E/WindowManager(4443): at android.view.Window$LocalWindowManager.addView(Window.java:554)

12-26 16:50:24.230: E/WindowManager(4443): at android.app.Dialog.show(Dialog.java:277)

12-26 16:50:24.230: E/WindowManager(4443): at com.example.cloud.AndroidUploader.onPreExecute(AndroidUploader.java:34)

12-26 16:50:24.230: E/WindowManager(4443): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)

12-26 16:50:24.230: E/WindowManager(4443): at android.os.AsyncTask.execute(AsyncTask.java:534)

12-26 16:50:24.230: E/WindowManager(4443): at com.example.cloud.upload_music$1$1.onClick(upload_music.java:132)

12-26 16:50:24.230: E/WindowManager(4443): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)

12-26 16:50:24.230: E/WindowManager(4443): at android.os.Handler.dispatchMessage(Handler.java:99)

12-26 16:50:24.230: E/WindowManager(4443): at android.os.Looper.loop(Looper.java:137)

12-26 16:50:24.230: E/WindowManager(4443): at android.app.ActivityThread.main(ActivityThread.java:4946)

12-26 16:50:24.230: E/WindowManager(4443): at java.lang.reflect.Method.invokeNative(Native Method)

12-26 16:50:24.230: E/WindowManager(4443): at java.lang.reflect.Method.invoke(Method.java:511)

12-26 16:50:24.230: E/WindowManager(4443): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)

12-26 16:50:24.230: E/WindowManager(4443): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)

12-26 16:50:24.230: E/WindowManager(4443): at dalvik.system.NativeStart.main(Native Method)

12-26 16:50:39.475: I/Process(4443): Sending signal. PID: 4443 SIG: 9

12-26 16:51:39.150: D/SensorManager(5972): unregisterListener::  Listener= android.view.OrientationEventListener$SensorEventListenerImpl@422c3c68

12-26 16:51:39.150: D/Sensors(5972): Remain listener = Sending .. normal delay 200ms

12-26 16:51:39.150: I/Sensors(5972): sendDelay --- 200000000

12-26 16:51:39.150: D/SensorManager(5972): JNI - sendDelay

12-26 16:51:39.150: I/SensorManager(5972): Set normal delay = true

12-26 16:51:39.195: W/IInputConnectionWrapper(5972): getSelectedText on inactive InputConnection

12-26 16:51:39.200: W/IInputConnectionWrapper(5972): setComposingText on inactive InputConnection


코드는 이렇습니다.

try {

// sendID();

String lineEnd = "\r\n";

String twoHyphens = "--";

String boundary = "*****";

FileInputStream mFileInputStream = new FileInputStream(fileName);

urlString += "?id=";

urlString += main.usr.getUserId();

urlString += "&path=" + fileName;

Log.d("Test", urlString);

URL connectUrl = new URL("urlString);

Log.d("Test", "mFileInputStream  is " + mFileInputStream);


// open connection

HttpURLConnection conn = (HttpURLConnection) connectUrl

.openConnection();

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setUseCaches(false);

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");

conn.setRequestProperty("Content-Type",

"multipart/form-data;boundary=" + boundary);


// write data

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);

dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\""

+ fileName + "\"" + lineEnd);

dos.writeBytes(lineEnd);


int bytesAvailable = mFileInputStream.available();

int maxBufferSize = 8 * 1024 * 1024;

int bufferSize = Math.min(bytesAvailable, maxBufferSize);


byte[] buffer = new byte[bufferSize];

int bytesRead = mFileInputStream.read(buffer, 0, bufferSize);


Log.d("Test", "image byte is " + bytesRead);


// read image

while (bytesRead > 0) {

dos.write(buffer, 0, bufferSize);

bytesAvailable = mFileInputStream.available();

bufferSize = Math.min(bytesAvailable, maxBufferSize);

bytesRead = mFileInputStream.read(buffer, 0, bufferSize);

}


dos.writeBytes(lineEnd);

dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);


// close streams

Log.e("Test", "File is written");

mFileInputStream.close();

dos.flush(); // finish upload...


// get response

int ch;

InputStream is = conn.getInputStream();

StringBuffer b = new StringBuffer();

while ((ch = is.read()) != -1) {

b.append((char) ch);

}

String s = b.toString();

Log.e("Test", "result = " + s);

// mEdityEntry.setText(s);

dos.close();


} catch (Exception e) {

Log.d("Test", "exception " + e.getMessage());

// TODO: handle exception

}



AsyncTask로 둘러주었습니다.