login register Sysop! about ME  

2017년 01월 10일 17시 22분 00초,     조회수 : 849
  제목 : 안드로이드에서 HttpURLConnection을 이용한 파일업로드 질문
SEQ : 163750 글쓴이 : idme

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

안드로이드 앱 개발을 하고 있습니다.
파일 업로드인데요. HttpURLConnection 객체를 이용해 서버의 asp파일로 파일을 전송합니다.
서버의 asp파일은 DEXT 업로드 컴포넌트를 이용합니다.

안드로이드 클라이언트에서 서버페이지 호출 및 파일전송은 잘 되고 있습니다.

                FileInputStream fileInputStream = new FileInputStream(selectedFile);
                URL url = new URL(SERVER_URL);
                connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);//Allow Inputs
                connection.setDoOutput(true);//Allow Outputs
                connection.setUseCaches(false);//Don't use a cached Copy
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Connection", "Keep-Alive");
                connection.setRequestProperty("ENCTYPE", "multipart/form-data");
                connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                connection.setRequestProperty("uploaded_file",selectedFilePath);

                //creating new dataoutputstream
                dataOutputStream = new DataOutputStream(connection.getOutputStream());

                //writing bytes to data outputstream
                dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
                dataOutputStream.writeBytes("Content-Disposition: form-data; 
name=\"uploaded_file\";filename=\""
                        + selectedFilePath + "\"" + lineEnd);
                dataOutputStream.writeBytes(lineEnd);

클라이언트에서 uploaded_file란 변수에 writeBytes로 아웃풋 하고 있고...



문제는

서버페이지 인데...


	   	   filename = uploadform("uploaded_file").FileName
	   	   filepath = uploadform.DefaultPath & "\" & filename
	   	   If uploadform.FileExists(filepath) Then
	   	   	   filenameonly = Left(filename, InStrRev(filename, ".") - 1) 
	   	   	   fileext = Mid(filename, InStrRev(filename, ".") + 1)
	   	   	   i = 1
	   	   	   Do While (1)
	   	   	   	   filepath =  uploadform.DefaultPath & "\" & filenameonly & "[" & i & "]" & "." & fileext
	   	   	   	   temp_filename = filenameonly & "[" & i & "]" & "." & fileext
	   	   	   	   If Not uploadform.FileExists(filepath) Then Exit Do 
	   	   	   	   i = i + 1
	   	   	   Loop 
	   	   else
	   	   	   temp_filename = filename
	   	   End If
	   	   filedbl = (CDbl(uploadform.FileLen) / 1024)
	   	   If filedbl > 1024 Then
	   	   	   filedbl = filedbl / 1024
	   	   	   temp_filelen = FormatNumber(filedbl,1) & "Mbyte"
	   	   else
	   	   	   temp_filelen = FormatNumber(filedbl,1) & "Kbyte"
	   	   End If

	   	   uploadform("uploaded_file").SaveAs filepath   <--여기서 에러

서버페이지에서 마지막 줄 SaveAs 할때 에러가 납니다.

아무리 생각해 봐도 바이트 형태로 파일이 전송되는 것을 저장을 못하는 것인지...
클라이언트에서 어떤 형태로 전송을 해야 asp로 저장할 수 있는지...

몇시간째 구글링을 해봐도 답이 없어서...
혹, 여기서는 해답을 구할 수 있을까... 생각되어 문의 합니다.


이럴바에... 차라리 안드로이드 클라이언트에서 FTP를 이용해 파일을 전송하는게 나은지 고민도 하고 있습니다.
답을 해주실 분...기다립니다.

  virgo75
  2017-01-10(22:26)
캐릭 이미지
제가 알기로는 되어야 정상으로 알고 있는데요?? 제가 모바일 앱개발을 한게 아니라서 모
바일쪽 소스는 모르지만 그냥 일반 방식에 저장 페이지를 만들어놓고 모바일앱쪽에서 호출
해서 저장 완료 되었던 페이지를 만들어봐서 되어야 한다고 알고 있습니다. 아마도 앱쪽에
설정이 다른게 있을듯 하네요

아니면 xmlhttp를 이용해서 파일전송이 가능하기는 합니다.

  idme
  2017-01-11(11:55)
ㅜㅜ... 그렇군요. 되어야 정상이라는 말씀에 위안을...
말씀해 주신 xmlhttp 방식으로 테스트를 해봐야 겠습니다.
답변 감사합니다~

  youngsik
  2017-01-13(22:36)
캐릭 이미지
filepath filename이 제대로 찍히는지 확인해 봐야할듯 합니다.


제목 작성자 날짜 조회
안드로이드에서 HttpURLConnection을 이용한 파일업로드 질문 (3) idme 2017-01-10 849

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})