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

이미지 업로드 관련 질문... 암 걸릴 것 같아요 ㅠㅠ 도와주세요

0 추천

이미지 업로드 코드인데...

갤러리에서 이미지를 선택하면 서버로 보내기만 하면 되는 간단한 코드입니다.

컴파일 에러는 안나는데 실제로 전송이 ㅇ안되네요 ㅠㅠ .... 한번만 굽어 살펴주세요 ㅠㅠ 

 

사진 선택하는 부분

		tv = (TextView)findViewById(R.id.textView1);
		tv.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.setAction(Intent.ACTION_PICK);

				intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
				intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
				intent.setType("image/*");

				startActivityForResult(intent, TAKE_PICTURE);
			}

		});

 

여기서부터 보시면 될 듯 합니다.. ㅠㅠㅠ 

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {

		if(requestCode == TAKE_PICTURE){
			if( data != null ){
				//final Bundle extras = data.getExtras();
				//Bitmap photo = extras.getParcelable("data");
				Uri selPhotoUri = data.getData();

				try{
					Bitmap selPhoto = Images.Media.getBitmap(getContentResolver(),selPhotoUri);
					Cursor c = getContentResolver().query(Uri.parse(selPhotoUri.toString()), null, null, null, null);
					c.moveToFirst();
					abPath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));
					setAbPath(abPath);
					timeThread();
					c.close();
					if( selPhoto != null ){      // 가지고온 사진 데이터를 이미지 뷰에 보여 준다.
						iv.setImageBitmap(selPhoto);
						tv.setText(abPath.toString());

						//signup_camera.setImageBitmap(photo);
						//Uri currImageURI = data.getData();
						//textView.setText("GALLERY : " + getRealPathFromURI(currImageURI));
					}

				}catch(FileNotFoundException e){
					e.printStackTrace();

				}catch(IOException e){
					e.printStackTrace();
				}finally{

				}
			}
		}
		super.onActivityResult(requestCode, resultCode, data);

	}

public String getAbPath(){
		return abPath;
	}

	public void timeThread() {

		dialog = new ProgressDialog(this);
		dialog = new ProgressDialog(this);
		dialog.setTitle("Wait...");
		dialog.setMessage("사진 전송 중");
		dialog.setIndeterminate(true);
		dialog.setCancelable(true);
		dialog.show();
		new Thread(new Runnable() {

			public void run() {
				// TODO Auto-generated method stub
				try {
					fileupload();
				} catch (Exception e) {
					Log.e("error", e.getMessage(), e);
				}
				dialog.dismiss();
			}

			private void sleep(int i) {
				// TODO Auto-generated method stub

			}

		}).start();
	}


public void fileupload(){

		try {
			File file = new File(getAbPath());
			HttpClient client = new DefaultHttpClient();
			HttpPost post = new HttpPost(urlString);
			post.setHeader("Connection", "Keep-Alive");
			post.setHeader("Accept-Charset", "euc-kr");
			post.setHeader("ENCTYPE", "multipart/form-data");
			FileBody bin = new FileBody(file);
			MultipartEntity reqEntity = new MultipartEntity(
					HttpMultipartMode.BROWSER_COMPATIBLE);

			reqEntity.addPart("MEM_image", bin);
			post.setEntity(reqEntity);

			HttpResponse response = client.execute(post);
			HttpEntity resEntity = response.getEntity();
			if (resEntity != null) {
				Log.i("RESPONSE", EntityUtils.toString(resEntity));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}


	}

 

고수님들 한번만 부탁드립니다. ㅠㅠ 

느린마라토너 (240 포인트) 님이 2014년 7월 4일 질문

2개의 답변

0 추천
무슨 문제인지 로그도 없어 잘은 모르겠지만 아마 네트워크 작업을 메인에서 하여 생기는 문제 같은데 네트워크 작업을 하는 부분을 별도의 쓰레드로 분리하여 실행하세요.
인연 (31,880 포인트) 님이 2014년 7월 7일 답변
0 추천
  1. c.moveToFirst(); 를 if 로 감싸는 부분 필요
  2. abPath 값이 제대로 찍히는 지 확인 필요
  3. dialog = new ProgressDialog(this); 2번 시도 중 
  4. urlString 제대로 맞나 확인 필요
  5. File file = new File(getAbPath()); 이후 file.isExist 확인 필요
  6. https://hc.apache.org/httpcomponents-client-ga/httpmime/examples/org/apache/http/examples/entity/mime/ClientMultipartFormPost.java 참조 하시면 될 것 같네요
aucd29 (218,390 포인트) 님이 2014년 7월 7일 답변
...