FileInputStream fileInputStream = new FileInputStream(sourceFile);
URL url = new URL(Const.UPLOAD + uid);
http = (HttpURLConnection) url.openConnection();
http.setDoInput(true);
http.setDoOutput(true);
http.setUseCaches(false);
http.setRequestMethod("POST");
http.setRequestProperty("Connection", "Keep-Alive");
http.setRequestProperty("ENCTYPE", "multipart/form-data");
http.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
http.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(http.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"upload\";filename=\""
+ fileName + "\"" + lineEnd);
dos.writeBytes(lineEnd);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
serverResponseCode = http.getResponseCode();
String serverResponseMessage = http.getResponseMessage();
Log.e(Const.LOGCAT, "HTTP Response is : "
+ serverResponseMessage + ": " + serverResponseCode);
InputStreamReader tmp = new InputStreamReader(
http.getInputStream(), "UTF-8");
BufferedReader reader = new BufferedReader(tmp);
final StringBuilder builder = new StringBuilder();
String str;
while ((str = reader.readLine()) != null) { // 서버에서 라인단위로
// 보내줄 것이므로
// 라인단위로 읽는다
builder.append(str + "\n");
}
if (serverResponseCode == 200) {
runOnUiThread(new Runnable() {
public void run() {
Log.e(Const.LOGCAT, getClass().getName()+" ---> myResult : "+builder);
}
});
}
fileInputStream.close();
dos.flush();
dos.close();
사진을 찍거나 갤러리에서 선택한 사진을 구축한 서버에 업로드 하려고 하는데
사진이 업로드 되는것은 문제가 없지만
업로드 되는 시간동안 프로그레스 다이얼로그로 띄우게끔 해놓았는데요
업로드가 빨리 될때에는 2~3초 사이에 업로드 되는데
가끔씩 20초가 넘을때까지 업로드가 되는건지 어쩐지 프로그레스 다이얼로그가 20초 동안 돌고 있습니다.
이경우 제 생각에 소켓과의 통신이 끊겨서 다시 연결하려고 하는것 같은데요
예를들어 10초가 넘어가면 끊고 다시 업로드를 시키게끔 하고싶습니다.
한마디로 timeout을 걸고 싶습니다.