총 게시물 934건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기

안드로이드에서 서버로 파일 업로드

글쓴이 : TheTruth 날짜 : 2016-10-11 (화) 02:10 조회 : 5209
글주소 : http://www.androidside.com/B12/10434
 
  오라클자바교육센터 구로본점
안드로이드전문교육, SDK실무개발, APP개발프로젝트, 실습폰지원, 재직자환급
www.oraclejava.co.kr
  임베디드 개발 마이크로비젼
임베디드 개발용역, 개발보드, 에뮬레이터.
www.mvtool.co.kr
  애드리빙 고급형제작 150만
안드로이드앱+IOS앱+연동형홈페이지. 쇼핑몰앱/웹 (알림무제한,페이지무제한)
appsweb.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

* 개발 관련 질문은 개발 Q&A에 하세요.

안녕하세요

인터넷에 나와있는 코드나 예제로 안드로이드 sd카드에 있는 mp4파일을 서버로 업로드를 해보는데

잘 되지 않아서 질문을 남기게 되었습니다.

이상한 점은 현재 서버로 업로드가 대체로 안되는데 어쩌다? 가끔? 업로드가 되기도 합니다-_-;;;;

폴더에 권한은 777로 다 주었고 코드는 다음과 같습니다.

클라이언트 코드(안드로이드)

private void runThread(){
dialog = ProgressDialog.show(UserVoiceRecordActivity.this, "", "Uploading file...", true);
new Thread(new Runnable() {
public void run() {
//RECORDED_FILE = "/sdcard/test/Audio/user_voice.mp4";
int response= uploadFile(RECORDED_FILE);
System.out.println("RES : " + response);
}
}).start();
}

public int uploadFile(String sourceFileUri) {
//UPLOAD_URL = aws서버주소/upload/upload.php
String upLoadServerUri = UPLOAD_URL;

//FILE_NAME = user_voice.mp4
String fileName = sourceFileUri.replace(sourceFileUri, FILE_NAME);

HttpURLConnection conn = null;
DataOutputStream dos = null;
String lineEnd = "";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1024 * 1024;
File sourceFile = new File(sourceFileUri);
if (!sourceFile.isFile()) {
Log.e("uploadFile", "Source File Does not exist");
return 0;
}
try { // open a URL connection to the Servlet
final 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("uploadedfile", fileName;
dos = new DataOutputStream(conn.getOutputStream());

dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name="uploadedfile";filename=""+ fileName + """ + lineEnd);
dos.writeBytes(lineEnd);

bytesAvailable = fileInputStream.available(); // create a buffer of maximum size

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("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode);
if(serverResponseCode == 200){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(UserVoiceRecordActivity.this, "File Upload Complete.", Toast.LENGTH_SHORT).show();
// startActivity(new Intent(UserVoiceRecordActivity.this, UserInfoActivity.class));
// finish();
}
});
}

//close the streams //
fileInputStream.close();
dos.flush();
dos.close();

} catch (MalformedURLException ex) {
dialog.dismiss();
ex.printStackTrace();
Toast.makeText(UserVoiceRecordActivity.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
} catch (Exception e) {
dialog.dismiss();
e.printStackTrace();
Toast.makeText(UserVoiceRecordActivity.this, "Exception : " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
dialog.dismiss();
return serverResponseCode;
}

서버 코드(PHP)
<?php
$target_path = "upload/uploads/";

/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename($_FILES["uploadedfile"]["name"]);

if(move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).
    " has been uploaded";
    chmod ("upload/uploads".basename( $_FILES['uploadedfile']['name']), 0644);
} else{
    echo "There was an error uploading the file, please try again!";
    echo "filename: " .  basename( $_FILES['uploadedfile']['name']);
    echo "target_path: " .$target_path;
}


 ?>




질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 1을, 답변이 채택되면 포인트 7을 드립니다.

추천/비추천 클릭하면 추천받으신 분, 추천하신 분 모두에게 포인트가 지급됩니다.

꽁순이 2016-10-11 (화) 09:23
개발관련 질문은 개발 QNA에 하시는데 더 빨리 답변 받아보실 수 있을거에요
댓글주소 추천 0
     
     
TheTruth 2016-10-11 (화) 10:28
아 답변 감사합니다!
질문게시판이 여기만 있는줄 알았는데 제가 확인을 못했네요^^
댓글주소 추천 0
hi
이전글  다음글  목록 글쓰기

총 게시물 934건, 최근 0 건 안내 RSS
번호 제목 글쓴이 상태 포인트 날짜 조회
934
모바일웹에서 앱 설치여부를 판단해서 앱이 설치 돠어 있어서 구동시킬때만 웹에서 이벤트 하나를 주고 싶은데요 어떻개해야하는지 모르겠네요
우라통
미해결
50 01-30 134
933
만약에 A회사에서 개발한 모듈을 B회사의 C라는 앱 import할 수 있게 납품을 한다고 하였을 때 실제로 C 앱이 이 모듈을 사용하고 있는지, D라는 다른 …
nars
미해결
35 01-23 386
932
앱 개발공부 3달정도하고 바로 앱 런칭해서  지금 플레이스토어에 런칭한지 한달정도 되었고 설치수는현재 3천명정도, 하루 100~150명정도 다운 받…
gonijjiwa
미해결
10 01-14 219
931
좀전에 유튜브에서 조금 충격 받을정도로 소름이 돋아버렸는데 모바일에서 저정도 커스터 마이징 시스템을 집어넣고 rpg게임 요소까지 집어넣으려면 …
노말맵
미해결
10 11-19 385
930
벅스 구버전 앱을 다운로드 하려고 레벨 2 까지 갔구 오늘 다운 받으려고 했는데 잘못된 접근이라 합니다.왜그런건가요?ㅠㅠ 꼭 다음주 까지 다운 받아…
준딘
미해결
10 11-10 388
929
말 주변이없어서 이상하게 말씀드릴수도있어서 미리 사과드리겠습니다. 앱 맨 밑바닥에 졸라맨을 만들어놓고 위에서 떨어지는 총알을 피하는 앱…
닉넴창원인
미해결
10 09-27 924
928
체계적으로 정리해서 할 수 있다는 장점이 있다는 건 대략 예측이 가지만... 단점은 잘 생각이 안나네요. 과연 개인 개발에서 애자일 같은 개발 방법…
qubec
미해결
10 07-17 1205
927
안녕하세요 ㅠㅠ 안드로이드 게시판에 게시글에있는 오픈소스를 다운받고싶은데 권한이없다고 뜨네요 혹시 레벵 몇부터 다운가능한지 아시는분 …
익명
미해결
10 06-09 929
926
저만 안들어가지는건가요?? 왼쪽스크린샷과 같이 플래시가 필요한 환경이라고 떠서 설정에서 플래시,팝업창을 각각 허용으로 변경했더니 오른쪽 …
안드초보1
해결
10 06-01 1022
925
* 개발 관련 질문은 개발 Q&A 에 하세요. 안녕하세요 .  프로그래밍 입문자 입니다. 추후에도 프로그래밍을 할 생각이여서 이왕이면 좋은…
LaLanne
미해결
10 02-22 1698
924
어디에 질문해야 할지 몰라 여기에 글을 남깁니다.. 제가 직접 개발하는건 아니고.. 개발자 1명 구해서 해보려고하는데.. 야놀자나 호텔스닷컴처럼 위…
원빈망고
해결
100 02-20 1663
923
이클립스로 만든 프로젝트는 안드로이드 스튜디오에서 가볍게 import되잖아요? 반대로 스튜디오로 만든 프로젝트를 이클립스에서 import가 가능하까요??…
재민이
미해결
10 02-16 1143
922
우리은행 인터넷뱅킹 사용해서 돈을 보내면 원터치알림으로 푸시 오나요??
안드초보1
미해결
10 02-03 1604
921
우선 추천받기에 앞서 개발용 노트북과 코딩용 노트북은 사양이 다른지 궁금합니다. 노트북을 구매하려는 이유는 올해 컴공쪽 대학을 가기에 필요할 …
Jecibar
미해결
10 01-08 3779
920
* 개발 관련 질문은 개발 Q&A에 하세요. starUML만 사용해 봐서 혹시 좋은 툴이 있다면 소개해주세요~
얄루루
미해결
10 12-27 1370
919
안녕하세요 저는 안드로이드 관심이 많은 한 청년입니다. 제가 안드로이드 공부하면 오픈소스나 예제소스를 활용하여 간단한 앱을 등록했습니다. …
익명
미해결
10 12-16 1447
918
크롬에서 이미지를 클릭하면 창이 하나 뜨면서 크롬페이지가 종료가 됩니다. 크롬에서 접속해서 바로 테스트하실 수 있게 이미지 아무거나 같이 …
안드초보1
보류
10 11-14 1447
917
지금 SSD128에 HDD1TB를 쓰고있습니다. 근데 좀 부족하 느낌이 들어서요 ...  SSD도 부족하고 HDD도 부족하고 제가 영화를 수집하는 습관이있어서... 나…
정에약한마음
미해결
10 10-27 1854
916
* 개발 관련 질문은 개발 Q&A에 하세요. 궁금해서 몇자 적습니다. 제목 그대로 DB는 Access이고, ASP로 해서 회사에서 사용중에 있습니다. 이것을 안드…
청선
미해결
35 10-19 1542
915
비콘으로 1차적인 프로그래밍을 해서 기능을 완성시킨 후에 유지보수를 하기 위해서 원격업데이트가 가능한가요?
물통20병
미해결
20 10-16 1503
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  다음  맨끝
 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기