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

multipart/form-data예외 상황 발생에러 문제 살려주세요...

0 추천

일주일째 삽질만하고 있습니다 ㅠㅠ

http://blog.daum.net/haha25/5387627

위의 사이트에서 똑같이 소스를 옮겨서 실행하고 있습니다.

앱에서는 사진이 찍혀서 sdcard에 저장이 되는데, 웹서버에서 받아 주질 못하고 멀티파트 에러가 자꾸 뜹니다..

아래는 웹서버 소스코드입니다.

<%@ page import="com.oreilly.servlet.*, com.oreilly.servlet.multipart.*" %>
<%@ page import="java.io.*, java.util.*" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>


<%
 String savePath = application.getRealPath("/images");
  
 int sizeLimit = 5 * 1024 * 1024;
 
 try{
  MultipartRequest multi = new MultipartRequest(request,
    savePath, sizeLimit, new DefaultFileRenamePolicy());

  
 }catch(Exception e){
  out.print(e);
  out.print("예외 상황 발생");
 }

 %>
</body>
</html>

안드로이드 소스코드는 코멘트에..

뭐가 문제일까요  일주일째 삽질만 푸고 있어요 제발 조언한마디만 부탁드립니다..

익명사용자 님이 2013년 5월 28일 질문
public class CameraTestActivity extends Activity {

    private static final String TAG = "CameraTestActivity";

    // 카메라 제어

    private Camera camera;

    // 촬영된  사진보기

    private ImageView imageView;

    // 처리중

    private boolean inProgress;

    //카메라에 찍힌 이미지 데이터

    byte[] data;

    DataOutputStream dos;

    ImageView view;

    SurfaceView surfaceView;

 

    

    // 카메라 SurfaceView의 리스너

    private SurfaceHolder.Callback surfaceListener =

        new SurfaceHolder.Callback() {

 

            // SurfaceView가 생성되었을때 화면에 보여주기위한 초기화 작업을 수행

            // 카메라를 오픈하고, 프리뷰의 위치를 설정한다.

 

            public void surfaceCreated(SurfaceHolder holder) {

                camera = Camera.open();

                try {

                 camera.setPreviewDisplay(holder);  //카메라의 preview 설정

                } catch (Exception e) {

                         e.printStackTrace();

                }

            }

 

            // SurfaceView가 화면에 표시되지않을때(액티비티가 비활성화 될때)호출한다.

            public void surfaceDestroyed(SurfaceHolder holder) {            

             camera.release();

             camera = null;

            }

       

            

            // surfaceCreate()가 호출된 다음 호출된다.

            // 프리뷰의 크기를 설정하고 프리뷰 영상을 표시한다.

            public void surfaceChanged(SurfaceHolder holder,

                                       int format,

                                       int width,

                                       int height) {

                // 카메라의 파라메터 값을 가져와서 미리보기 크기를 설정 하고

             // 프리뷰를 보여준다.

                Camera.Parameters parameters =

                                     camera.getParameters();

                parameters.setPreviewSize(width, height);

                camera.setParameters(parameters);

                camera.startPreview();

            }

        };

   

        

    // 카메라 셔트가 눌러질때

    private Camera.ShutterCallback shutterListener =

        new Camera.ShutterCallback() {

           

            public void onShutter() {

             

                if (camera != null && inProgress == false) {

                   

                    camera.takePicture(

                        shutterListener,        // 셔터 후

                        null,                       // Raw 이미지 생성 후

                        picutureListener);    // JPE 이미지 생성 후

                    inProgress = true;

                }

            }

        };

    

 

      Bitmap bitmap;

    // JPEG 이미지를 생성 후 호출

    private Camera.PictureCallback picutureListener =

        new Camera.PictureCallback() {

            public void onPictureTaken(byte[] data, Camera camera) {

                if (data != null) {

                    //  적용할 옵션이 있는 경우 BitmapFactory클래스의 Options()

                    //  메서드로 옵션객체를 만들어 값을 설정하며

                    //  이렇게 만들어진 옵션을 Bitmap 객체를 만들때 네번째

                    //  아규먼트로 사용한다.

                    //

                    //  처리하는 이미지의 크기를 축소

                    //  BitmapFactory.Options options =

                    //      new BitmapFactory.Options();

                    //  options.inSampleSize = IN_SAMPLE_SIZE;

                 CameraTestActivity.this.data=data;

                   bitmap = BitmapFactory.decodeByteArray(data,

                                                      0,

                                                      data.length,

                                                      null);

                    //이미지 뷰 이미지 설정

                    imageView.setImageBitmap(bitmap);

                    doSaveFile();                 // sdcard에 파일 저장

                    doFileUpload();              //서버에 이미지를 전송하는 메서드 호출

                    Toast.makeText(CameraTestActivity.this,
       "서버에 파일을 성공적으로 전송하였습니다.",
       Toast.LENGTH_LONG).show();

                    

                    camera.startPreview();   // 정지된 프리뷰를 재개

                    inProgress = false;        // 처리중 플래그를 끔

                    

                }

            }

        };

       

       File saveFile=new File("/mnt/sdcard/saveImages/image01.jpg");   // 파일이 저장되는 경로 지정

 


       public void doSaveFile() {

           

       OutputStream out = null;

       try {

       saveFile.createNewFile();

           out = new FileOutputStream(saveFile);

           bitmap.compress(CompressFormat.JPEG, 70, out);

 

       } catch (Exception e) {

             e.printStackTrace();

       } finally {

             try { out.close();  } catch (IOException e) {e.printStackTrace();}

       }

       }

       

 

       public void doFileUpload() {

          try {

           HttpClient httpClient = new DefaultHttpClient();  

           String url = "http://192.168.10.106:8005/fileUpload/FileUpload4.jsp";

           HttpPost post = new HttpPost(url);

           FileBody bin = new FileBody(saveFile);

           MultipartEntity multipart =

            new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  

              multipart.addPart("images", bin);          

          

           post.setEntity(multipart);  

           HttpResponse response = httpClient.execute(post);  

           HttpEntity resEntity = response.getEntity();   

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

    }  

        

        

  

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // 액티비티의 타이틀이 안보이도록 설정한다.

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.ImageView01);

        surfaceView =  (SurfaceView) findViewById(R.id.SurfaceView01);
        // surface를 제어하는 SurfaceHolder
        SurfaceHolder holder = surfaceView.getHolder();
        // SurfaceView 리스너를 등록
        holder.addCallback(surfaceListener);
        // 버퍼 사용하지 않음
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }
    
 @Override
 public boolean onTouchEvent(MotionEvent event) {
  if (event.getAction() == MotionEvent.ACTION_DOWN) {
   shutterListener.onShutter();
  }
  return true;
 }
}
jsp코드에서 다른 소스를 추가하거나 해야하나요? ㅠㅠ

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...