2014-04-14 2 views
0

아무도 내 코드를 확인하십시오. 첫 번째로 서버에 이미지를 업로드하는 중 오류가 발생하여 메모리를 표시하고 그 후에 작은 이미지를 업로드하면 어디에서 도움이되는지 알 수 없습니다. 여기 json을 사용하여 서버로 이미지를 보내는 방법

코드

uploadButton = (Button)findViewById(R.id.uploadButton); 
    btnselectpic = (Button)findViewById(R.id.button_selectpic); 
    messageText = (TextView)findViewById(R.id.messageText); 
    imageview = (ImageView)findViewById(R.id.imageView_pic); 

    btnselectpic.setOnClickListener(this); 
    uploadButton.setOnClickListener(this); 
    upLoadServerUri = "http://10.0.2.2/chatapp/Upload_image_ANDROID/upload_image.php"; 
    ImageView img= new ImageView(this); 

} 


@Override 
    public void onClick(View arg0) { 
    if(arg0==btnselectpic) 
{ 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Complete actionusing"),1); 

    } 
     elseif (arg0==uploadButton) { 

dialog = ProgressDialog.show(MainActivity.this, "", "Uploading file...", true); 
messageText.setText("uploading started....."); 
new Thread(new Runnable() { 
      public void run() { 

        uploadFile(imagepath); 

      } 
      }).start();  
    } 

    } 

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

    if (requestCode == 1 && resultCode == RESULT_OK) { 
     //Bitmap photo = (Bitmap) data.getData().getPath(); 

     Uri selectedImageUri = data.getData(); 
     imagepath = getPath(selectedImageUri); 
     Bitmap bitmap=BitmapFactory.decodeFile(imagepath); 
     imageview.setImageBitmap(bitmap); 
     messageText.setText("Uploading file path:" +imagepath); 

} 
} 
    public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 

public int uploadFile(String sourceFileUri) 
{ 


    String fileName = sourceFileUri; 

     HttpURLConnection conn = null; 
     DataOutputStream dos = null; 
     String lineEnd = "\r\n"; 
     String twoHyphens = "--"; 
     String boundary = "*****"; 
     int bytesRead, bytesAvailable, bufferSize; 
     byte[] buffer; 
     int maxBufferSize = 1 * 1024 * 1024; 
     File sourceFile = new File(sourceFileUri); 

     if (!sourceFile.isFile()) { 

     dialog.dismiss(); 

     Log.e("uploadFile", "Source File not exist :"+imagepath); 

     runOnUiThread(new Runnable() { 
      public void run() { 
      messageText.setText("Source File not exist :"+ imagepath); 
      } 
     }); 

     return 0; 

     } 
     else 
     { 
     try { 

      // open a URL connection to the Servlet 
      FileInputStream fileInputStream = new FileInputStream(sourceFile); 
      URL url = new URL(upLoadServerUri); 

      // Open a HTTP connection to the URL 
      conn = (HttpURLConnection) url.openConnection(); 
      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); 
      conn.setRequestProperty("submitType", "PostAd"); 

      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); 

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

      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() { 
         String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" ; 
         messageText.setText(msg); 
         Toast.makeText(MainActivity.this, "File Upload Complete.", Toast.LENGTH_SHORT).show(); 
        } 
       });     
      }  

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

     } catch (MalformedURLException ex) { 

      dialog.dismiss(); 
      ex.printStackTrace(); 

      runOnUiThread(new Runnable() { 
       public void run() { 
       messageText.setText("MalformedURLException Exception : check script url."); 
        Toast.makeText(MainActivity.this, "MalformedURLException", Toast.LENGTH_SHORT).show(); 
       } 
      }); 

      Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
     } catch (Exception e) { 

      dialog.dismiss(); 
      e.printStackTrace(); 

      runOnUiThread(new Runnable() { 
       public void run() { 
       messageText.setText("Got Exception : see logcat "); 
        Toast.makeText(MainActivity.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e); 
     } 
     dialog.dismiss();  
     return serverResponseCode; 

     } // End else block 
    } 

답변

0

비트 맵 맵 = BitmapFactory.decodeFile (의 ImagePath)이고;

이 매개 변수에는 일반적으로 2 개의 매개 변수가 있으며, 하나는 imagepath이고 다른 하나는 BitmapFactory.Options의 개체입니다. 다음 행을 추가하여 시험해보십시오.

  BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); 
      bmpFactoryOptions.inJustDecodeBounds = true; 
      Bitmap bitmap = BitmapFactory.decodeFile(imagepath, bmpFactoryOptions); 
+0

Adi It didnt wrk는 내 코드를 기기에서 실행할 수 있습니까? – user3492351

관련 문제