앞서질문했던것에서 같은 쓰레드를 쓰면안된다고하여서
클레스를 하나만들어서 AsyncTask를 상속해주었습니다.
그리고 excute해주니까
역시나 사진은 업로드가 되지만 mp3파일은 업로드가 되질않는군요 ㅠㅠ....
이거하나만뜹니다 ㅠㅠ
11-17 00:31:33.556: D/SensorManager(23682): unregisterListener:: Listener= android.view.OrientationEventListener$SensorEventListenerImpl@42358578
11-17 00:31:33.556: D/Sensors(23682): Remain listener = Sending .. normal delay 200ms
11-17 00:31:33.556: I/Sensors(23682): sendDelay --- 200000000
11-17 00:31:33.561: D/SensorManager(23682): JNI - sendDelay
11-17 00:31:33.561: I/SensorManager(23682): Set normal delay = true
package com.example.cloud;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
public class AndroidUploader extends AsyncTask<Void, Integer, Void> {
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private String urlString;
private String params = "";
private String fileName;
private ProgressDialog dialog;
public AndroidUploader(String urlString, String fileName,ProgressDialog dialog) {
this.urlString = urlString;
this.fileName = fileName;
this.dialog = dialog;
}
@Override
protected void onPreExecute() {
dialog.setMessage("Uploading...");
dialog.setIndeterminate(false);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
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
}
return null;
}
@Override
protected void onPostExecute(Void result) {
try {
dialog.dismiss();
} catch(Exception e) {
}
}
}
jpg가 올라간다니 큰 이상은 없을 듯 한데.. 이상하네요.
URL connectUrl = new URL("urlString); 에 따옴표가 들어갔던데, 컴파일이 되긴 한건가요?
그리고 dos.write(buffer, 0, bufferSize); 부분도 이상합니다. bufferSize 대신 bytesRead를 주시는게 맞을 듯 합니다.
마지막으로 Log.d("Test", urlString); 같은 로그라도 나와야 할텐데, 그러한 로그가 없는게 doInBackground 호출 자체가 안 된듯 한데
excute 하기전에 오류가 나는게 아닌지 확인해 보셔야 할 듯 합니다.