2015-11-21 4 views
0

Я пытался загрузить файл изображения на сервер, это нормально работает, когда я пытаюсь использовать эмулятор, но он дает внутренний сервер Ошибка при загрузке с устройства.Загрузка файла изображения работает на эмуляторе, но не беспокоит устройство

Шаги Я следую за этим:
1] захватить изображение с камеры и сохранить его на внешнем хранилище.
2] показать файл на imageview.
3] При нажатии кнопки выгружаете файл с внешнего хранилища на сервер.

При нажатии на кнопку загрузки у меня есть код.

Category=(String) category.getSelectedItem(); 
Bitmap sendbitmap = rotateBitmapImage(BitmapFactory.decodeFile(mCurrentPhotoPath)); 

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
sendbitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
//compress to which format you want. 

byte [] byte_arr = stream.toByteArray(); 
String image_str = Base64.encodeBytes(byte_arr); 

final ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("image",image_str)); 
nameValuePairs.add(new BasicNameValuePair("userid",Integer.toString(userid))); 
nameValuePairs.add(new BasicNameValuePair("State",State)); 
nameValuePairs.add(new BasicNameValuePair("rc",rc)); 
nameValuePairs.add(new BasicNameValuePair("vill",vill)); 
nameValuePairs.add(new BasicNameValuePair("Category",Category));   
new UploadData().execute(nameValuePairs); 

UploadData AsyncClass:

private class UploadData extends AsyncTask<ArrayList<NameValuePair>, Void, Void> { 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(FinalStage.this); 
       pDialog.setMessage("Uploading data"); 
       pDialog.setCancelable(false); 
       pDialog.show(); 
      } 

      @Override 
      protected Void doInBackground(ArrayList<NameValuePair>... arg0) { 

       try{ 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost("http://xxx.xxx.com/webServices/upload_image.php"); 
        httppost.setEntity(new UrlEncodedFormEntity(arg0[0])); 
        ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
        final String response = httpclient.execute(httppost,responseHandler); 
        System.out.println("response "+response); 
        JSONArray jlogin = new JSONArray(response);       
        JSONObject loginObj = (JSONObject) jlogin.getJSONObject(0); 
        if(loginObj.getString("status").equals("true")) 
        { 
         runOnUiThread(new Runnable() { 


           @Override 
           public void run() { 
           File f=new File(mCurrentPhotoPath); 
            f.delete(); 
            img.setImageResource(R.drawable.ic_launcher); 
            Toast.makeText(FinalStage.this, "Uploaded Successfully ", Toast.LENGTH_LONG).show();       
           } 
          }); 
        } 
        else 
        { 
         runOnUiThread(new Runnable() { 


           @Override 
           public void run() { 
            Toast.makeText(FinalStage.this, " Problem upload Uploaded", Toast.LENGTH_LONG).show();       
           } 
          }); 

        } 


       }catch(final Exception e){ 
        runOnUiThread(new Runnable() { 

         @Override 
         public void run() { 
          System.out.println("Soham "+e.getMessage()); 
          Toast.makeText(FinalStage.this, e.getMessage(), Toast.LENGTH_LONG).show();        
         } 
        }); 

       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) { 
       super.onPostExecute(result); 
       if (pDialog.isShowing()) 
        pDialog.dismiss(); 

      } 

     } 

Php Сценарий:

include_once("connection.php"); 
    $base=$_REQUEST['image']; 
    $userid=$_REQUEST['userid']; 
    $state=$_REQUEST['State']; 
    $rc=$_REQUEST['rc']; 
    $vill=$_REQUEST['vill']; 
    $Category=$_REQUEST['Category']; 

    $date_dir=date("Y-m-d"); 
    $time_offset="525"; 
    $time_a=($time_offset * 120); 
    $system_time=date('h-i-s',time() + $time_a); 

    $querymax="select IFNULL(MAX(id),0)+1 as id from record"; 
    $stmt = $con->prepare($querymax); 
    $stmt->execute(); 
    $row=$stmt->fetch(PDO::FETCH_ASSOC); 
    $id=$row['id']; 
    //echo $id; 

    $imagename=$state."_".$vill."_".$Category."_".$id.".jpg"; 

    //$date_dir="12-12-2014"; 
    //$area_dir="sambhaji"; 
    //$dirname="uploads/"; 
    $binary=base64_decode($base); 
    header('Content-Type: bitmap; charset=utf-8'); 


    //$w=mysql_query("INSERT into image values('$login_id','$name',10)"); 
    $url="webServices/uploads"; 

    chdir("uploads"); 
    if(!file_exists($date_dir)) 
    { 
     mkdir($date_dir); 
     chdir($date_dir); 
     if(!file_exists($state)) 
     { 
      mkdir($state); 
      chdir($state); 
      if(!file_exists($Category)) 
      { 
       mkdir($Category); 
       chdir($Category); 

       $file = fopen($imagename, 'wb'); 
       fwrite($file, $binary); 
       fclose($file); 

       $path="$url/$date_dir/$state/$Category/"; 

       $query="insert into record (state,cycle_rout,village,category,image_name,userid,date)values(:state,:rc,:vill,:Category,:imagename,:userid,:date_dir)"; 
       $stmt = $con->prepare($query); 
       $stmt->bindParam(':state',$state); 
       $stmt->bindParam(':rc',$rc); 
       $stmt->bindParam(':vill',$vill); 
       $stmt->bindParam(':Category',$Category); 
       $stmt->bindParam(':imagename',$imagename); 
       $stmt->bindParam(':userid',$userid); 
       $stmt->bindParam(':date_dir',$date_dir); 

       if($stmt->execute()) 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'true'); 
        print(json_encode($json_output)); 
       } 
       else 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'false'); 
        print(json_encode($json_output)); 
       } 
      } 
      else 
      { 
       chdir($Category); 

       $file = fopen($imagename, 'wb'); 
       fwrite($file, $binary); 
       fclose($file); 

       $path="$url/$date_dir/$state/$Category/"; 

       $query="insert into record (state,cycle_rout,village,category,image_name,userid,date)values(:state,:rc,:vill,:Category,:imagename,:userid,:date_dir)"; 
       $stmt = $con->prepare($query); 
       $stmt->bindParam(':state',$state); 
       $stmt->bindParam(':rc',$rc); 
       $stmt->bindParam(':vill',$vill); 
       $stmt->bindParam(':Category',$Category); 
       $stmt->bindParam(':imagename',$imagename); 
       $stmt->bindParam(':userid',$userid); 
       $stmt->bindParam(':date_dir',$date_dir); 
       if($stmt->execute()) 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'true'); 
        print(json_encode($json_output)); 
       } 
       else 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'false'); 
        print(json_encode($json_output)); 
       } 

      }   
     } 
     else 
     { 
      chdir($state); 
      if(!file_exists($Category)) 
      { 
       mkdir($Category); 
       chdir($Category); 

       $file = fopen($imagename, 'wb'); 
       fwrite($file, $binary); 
       fclose($file); 

       $path="$url/$date_dir/$state/$Category/"; 

       $query="insert into record (state,cycle_rout,village,category,image_name,userid,date)values(:state,:rc,:vill,:Category,:imagename,:userid,:date_dir)"; 
       $stmt = $con->prepare($query); 
       $stmt->bindParam(':state',$state); 
       $stmt->bindParam(':rc',$rc); 
       $stmt->bindParam(':vill',$vill); 
       $stmt->bindParam(':Category',$Category); 
       $stmt->bindParam(':imagename',$imagename); 
       $stmt->bindParam(':userid',$userid); 
       $stmt->bindParam(':date_dir',$date_dir); 
       if($stmt->execute()) 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'true'); 
        print(json_encode($json_output)); 
       } 
       else 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'false'); 
        print(json_encode($json_output)); 
       } 
      } 
      else 
      { 
       chdir($Category); 

       $file = fopen($imagename, 'wb'); 
       fwrite($file, $binary); 
       fclose($file); 

       $path="$url/$date_dir/$state/$Category/"; 

       $query="insert into record (state,cycle_rout,village,category,image_name,userid,date)values(:state,:rc,:vill,:Category,:imagename,:userid,:date_dir)"; 
       $stmt = $con->prepare($query); 
       $stmt->bindParam(':state',$state); 
       $stmt->bindParam(':rc',$rc); 
       $stmt->bindParam(':vill',$vill); 
       $stmt->bindParam(':Category',$Category); 
       $stmt->bindParam(':imagename',$imagename); 
       $stmt->bindParam(':userid',$userid); 
       $stmt->bindParam(':date_dir',$date_dir); 
       if($stmt->execute()) 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'true'); 
        print(json_encode($json_output)); 
       } 
       else 
       { 
        header('Content-Type: application/json'); 
        $json_output[]=array('status'=>'false'); 
        print(json_encode($json_output)); 
       } 

      } 
     } 
    } 

, почему это происходит? на эмуляторе он работает очень хорошо, но на устройстве он задает проблему. он застрял на индикаторе выполнения и через 2 3 минуты он отображает сообщение Toast как Внутренняя ошибка сервера

+0

Можете ли вы опубликовать stacktrace исключения? –

+0

Где находится ваш сервер? И какой ip использует клиент для подключения к серверу? – greenapps

+0

't показывает сообщение тоста, как пожалуйста, проверьте подключение к Интернету! Внутренняя ошибка сервера'. Хорошо, это твои собственные слова. У вас там есть улов. Лучше расскажите, что зарегистрировано в e.getMessage(). И Toast e.getMessage() вместо вашего собственного -wrong-description. – greenapps

ответ

0

На самом деле проблема заключалась в использовании кодировки base64 для передачи изображения высокого качества. Я пытался загрузить исходное изображение с камеры. Я заменил передачу кодировки base64 на MultipartEntity.

Смежные вопросы