마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 파일 업로드 Jsp 질문

0 추천
public static int upLoad2Server(String sourceFileUri)
	{
	 String upLoadServerUri = "http://192.168.2.144:8080/MyServer/";
	 // String [] string = sourceFileUri;
	 String fileName = sourceFileUri;
	 
	 int serverResponseCode = 0;
	 HttpURLConnection conn = null;
	 DataOutputStream dos = null;
	 DataInputStream inStream = null;
	 String lineEnd = "\r\n";
	 String twoHyphens = "--";
	 String boundary = "*****";
	 int bytesRead, bytesAvailable, bufferSize;
	 byte[] buffer;
	 int maxBufferSize = 1 * 1024 * 1024;
	 String responseFromServer = "";

	 File sourceFile = new File(sourceFileUri);
	 if (!sourceFile.isFile()) {
		 Log.e("Huzza", "Source File Does not exist");
		 return 0;
	 }
	 
	 try 
	 { // open a URL connection to the Servlet
	 FileInputStream fileInputStream = new FileInputStream(sourceFile);
	 URL url = new URL(upLoadServerUri);
	 conn = (HttpURLConnection) url.openConnection(); // Open a HTTP  connection to  the URL 
	 conn.setDoInput(true); // Allow Inputs
	 conn.setDoOutput(true); // Allow Outputs
	 conn.setUseCaches(false); // Don't use a Cached Copy
	 
	 conn.setRequestMethod("POST");
	 conn.setRequestProperty("Connection", "Keep-Alive");
	 conn.setRequestProperty("ENCTYPE", "multipart/form-data");
	 conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
	 conn.setRequestProperty("uploaded_file", fileName);
	 dos = new DataOutputStream(conn.getOutputStream());
	 
	 dos.writeBytes(twoHyphens + boundary + lineEnd);
	 dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""+ fileName + "\"" + lineEnd);
	 dos.writeBytes(lineEnd);
	 
	 bytesAvailable = fileInputStream.available(); // create a buffer of  maximum size
	 Log.i("Huzza", "Initial .available : " + bytesAvailable);
	 
	 bufferSize = Math.min(bytesAvailable, maxBufferSize);
	 buffer = new byte[bufferSize];
	 
	 // read file and write it into form...
	 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);
	 }

	// send multipart form data necesssary after file data...
	dos.writeBytes(lineEnd);
	dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

	 // Responses from the server (code and message)
	serverResponseCode = conn.getResponseCode();
	String serverResponseMessage = conn.getResponseMessage();

	Log.i("Upload file to server", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode);
	// close streams
	Log.i("Upload file to server", fileName + " File is written");
	 fileInputStream.close();
	dos.flush();
	dos.close();
	 } catch (MalformedURLException ex) {
	 ex.printStackTrace();
	Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
	} catch (Exception e) {
	e.printStackTrace();
	}
	//this block will give the response of upload link
	  try {
	  BufferedReader rd = new BufferedReader(new InputStreamReader(conn
	    .getInputStream()));
	  String line;
	  while ((line = rd.readLine()) != null) {
	   Log.i("Huzza", "RES Message: " + line);
	  }
	  rd.close();
	 } catch (IOException ioex) {
	  Log.e("Huzza", "error: " + ioex.getMessage(), ioex);
	 }
	 return serverResponseCode;  // like 200 (Ok)
	} // end upLoad2Server
05-08 12:04:29.224: E/###(18303): 실제경로 : /storage/emulated/0/DCIM/Camera/20150507_150222.mp4
05-08 12:04:29.224: E/###(18303): 파일명 : 20150507_150222.mp4
05-08 12:04:29.224: E/###(18303): uri : content://media/external/video/media/9179
05-08 12:04:29.224: E/###(18303): uri id : 9179
05-08 12:04:29.224: E/###(18303): uricontent://media/external/video/media/9179uriId9179urlhttp://192.168.2.144:8080/MyServer/sample_upload.jsp
05-08 12:04:29.294: I/System.out(18303): main calls detatch()
05-08 12:04:29.314: I/Huzza(18303): Initial .available : 1186310
05-08 12:04:29.334: D/dalvikvm(18303): GC_FOR_ALLOC freed 4520K, 32% free 18517K/27144K, paused 16ms, total 16ms
05-08 12:04:29.334: I/dalvikvm-heap(18303): Grow heap (frag case) to 24.120MB for 2097424-byte allocation
05-08 12:04:31.184: I/Upload file to server(18303): HTTP Response is : OK: 200
05-08 12:04:31.194: I/Upload file to server(18303): /storage/emulated/0/DCIM/Camera/20150507_150222.mp4 File is written
05-08 12:04:31.204: I/Huzza(18303): RES Message: 
05-08 12:04:31.204: I/Huzza(18303): RES Message: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
05-08 12:04:31.204: I/Huzza(18303): RES Message: <html>
05-08 12:04:31.204: I/Huzza(18303): RES Message: <head>
05-08 12:04:31.214: I/Huzza(18303): RES Message: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
05-08 12:04:31.214: I/Huzza(18303): RES Message: <title>Insert title here</title>
05-08 12:04:31.214: I/Huzza(18303): RES Message: </head>
05-08 12:04:31.214: I/Huzza(18303): RES Message: <body>
05-08 12:04:31.214: I/Huzza(18303): RES Message: 
05-08 12:04:31.214: I/Huzza(18303): RES Message: </body>
05-08 12:04:31.214: I/Huzza(18303): RES Message: </html>
 
성공한것 같은데 파일이 안보입니다. 저장이 안된건가 ...
바밥 (420 포인트) 님이 2015년 5월 8일 질문

1개의 답변

0 추천
서버측에서의 처리는 어떻게 하시는지요?
서버거 어떻게 파일을 받을지 받은후는 어떻게 처리할지를 모르겠네요
컴러기 (22,230 포인트) 님이 2015년 5월 8일 답변
제 컴퓨터(서버)에 파일을 저장하고 싶은데요.. 어떤식으로 줘야할지 모르겠습니다.
파일을 읽어들이는것까지 보이는데 output으로 어떻게 뱉어줘야할지 ( 경로 설정 )
비밥님의 서버는 어떤것인가요?
jsp라면 톰켓을 사용하시는 것인가요?
그리고 서버에서는 파일이 업로드 되면 어떤처리를 하시는지요?
제가 얼핏 봤을때는 파일은 업로드 했으나 서버가 파일에 대한 처리를 하지못해서 파일이 사러지는 것이 아닌지 의심스럽습니다.
...