2013-09-17 2 views
0

Я новичок в android, я пытаюсь загрузить изображение на сервер mysql. В моем приложении у меня есть кнопка с именем upload image, когда пользователь нажимает на кнопку, она откроет камеру в Android-устройстве. Я успешно получаю захваченное изображение с помощью камеры в представлении изображения, я хочу сохранить это изображение в базе данных mysql с помощью php, я успешно подключен к базе данных, используя php и загружая несколько полей, введенных в edittext, но я не могу загрузить изображение. Я googled, но все показывают загружаемое изображение с URL-адресом. Но в моем случае это немного отличается от моего кода и, пожалуйста, помогите мне.Как загрузить захваченное изображение с помощью устройства android в базу данных mysql с помощью php?

FormActivity.java

public class FormActivity extends Activity { 

final Context context = this; 
private ProgressDialog pDialog; 
static final String TAG_SUCCESS = "success"; 
JSONParser jsonParser = new JSONParser(); 
private static String url_submit_hourly = "http://www.example.com/FacebookApp/submit.php"; 

EditText tasktitle; 

String title; 
Button upload, submit; 

private static final int CAMERA_REQUEST = 1888; 
private ImageView imageView; 
byte[] byteArray; 
protected static final int TAKE_PHOTO_CODE = 0; 
byte[] imgbyte; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.submit_hourly); 

    tasktitle = (EditText) findViewById(R.id.etfirst); 

    submit = (Button) findViewById(R.id.submit); 
    submit.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new BookSlot().execute(); 
     } 
    }); 

    upload = (Button) findViewById(R.id.upload); 
    this.imageView = (ImageView) this.findViewById(R.id.image); 
    upload.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
      startActivityForResult(intent, CAMERA_REQUEST); 
     } 

    }); 

} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
     imageView.setImageBitmap(photo); 

    } 

} 

class BookSlot extends AsyncTask<String, String, String> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(FormActivity.this); 
     pDialog.setMessage("Creating Hourly.."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... args) { 


     title = tasktitle.getText().toString(); 


     List<NameValuePair> params = new ArrayList<NameValuePair>(); 

     params.add(new BasicNameValuePair("task_tilte", title)); 

     JSONObject json = jsonParser.makeHttpRequest(url_submit_hourly, 
       "POST", params); 

     // check log cat fro response 
     Log.d("Create Response", json.toString()); 

     // check for success tag 
     try { 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // successfully created product 
       Intent i = new Intent(getApplicationContext(), 
         FacebookLoginActivity.class); 

       startActivity(i); 

       // closing this screen 
       finish(); 
      } else { 
       // failed to create product 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once done 
     pDialog.dismiss(); 
    } 

} 

} 

submit.php

<?php 


// array for JSON response 
$response = array(); 

// check for required fields 
if (isset($_POST['task_tilte'])) { 

$title = $_POST['task_tilte']; 


// include db connect class 
define('__ROOT__', dirname(dirname(__FILE__))); 
require_once(__ROOT__.'/FacebookApp/db_connect.php'); 

// connecting to db 
$db = new DB_CONNECT(); 

// mysql inserting a new row 
$result = mysql_query("INSERT INTO      task_table(task_tilte)  VALUES('$title')"); 

// check if row inserted or not 
if ($result) { 
    // successfully inserted into database 
    $response["success"] = 1; 
    $response["message"] = "Product successfully created."; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 
    // failed to insert row 
    $response["success"] = 0; 
    $response["message"] = "Oops! An error occurred."; 

    // echoing JSON response 
    echo json_encode($response); 
} 
} else { 
// required field is missing 
$response["success"] = 0; 
$response["message"] = "Required field(s) is missing"; 

// echoing JSON response 
echo json_encode($response); 
} 
?> 

Я не получаю представление о том, как сохранить изображение в ImageView в базу данных MySQL.

ответ

0

попробовать это:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);   ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want. 
      byte [] byte_arr = stream.toByteArray(); 
      String image_str = Base64.encodeBytes(byte_arr); 
      ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

      nameValuePairs.add(new BasicNameValuePair("image",image_str)); 

      Thread t = new Thread(new Runnable() { 

      @Override 
      public void run() { 
        try{ 
         HttpClient httpclient = new DefaultHttpClient(); 
         HttpPost httppost = new HttpPost("http://10.0.2.2/Upload_image_ANDROID/upload_image.php"); 
         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
         HttpResponse response = httpclient.execute(httppost); 
         String the_string_response = convertResponseToString(response); 
         runOnUiThread(new Runnable() { 

           @Override 
           public void run() { 
            Toast.makeText(UploadImage.this, "Response " + the_string_response, Toast.LENGTH_LONG).show();       
           } 
          }); 

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

          @Override 
          public void run() { 
           Toast.makeText(UploadImage.this, "ERROR " + e.getMessage(), Toast.LENGTH_LONG).show();        
          } 
         }); 
          System.out.println("Error in http connection "+e.toString()); 
        } 
      } 
     }); 
     t.start(); 


public String convertResponseToString(HttpResponse response) throws IllegalStateException, IOException{ 

      String res = ""; 
      StringBuffer buffer = new StringBuffer(); 
      inputStream = response.getEntity().getContent(); 
      int contentLength = (int) response.getEntity().getContentLength(); //getting content length….. 
       runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       Toast.makeText(UploadImage.this, "contentLength : " + contentLength, Toast.LENGTH_LONG).show();      
      } 
     }); 

      if (contentLength < 0){ 
      } 
      else{ 
        byte[] data = new byte[512]; 
        int len = 0; 
        try 
        { 
         while (-1 != (len = inputStream.read(data))) 
         { 
          buffer.append(new String(data, 0, len)); //converting to string and appending to stringbuffer….. 
         } 
        } 
        catch (IOException e) 
        { 
         e.printStackTrace(); 
        } 
        try 
        { 
         inputStream.close(); // closing the stream….. 
        } 
        catch (IOException e) 
        { 
         e.printStackTrace(); 
        } 
        res = buffer.toString();  // converting stringbuffer to string….. 

        runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         Toast.makeText(UploadImage.this, "Result : " + res, Toast.LENGTH_LONG).show(); 
        } 
       }); 
        //System.out.println("Response => " + EntityUtils.toString(response.getEntity())); 
      } 
      return res; 
     } 
+0

привет @shruti спасибо для ответа, но посмотрите на мой код, когда у меня уже есть класс json parser и успешно вставляем заголовок, и я получаю изображение в представлении изображения из этого изображения. Я хочу загрузить изображение на сервер, используя существующий класс json. Может быть, мне нужно преобразовать растровое изображение в строку. Пожалуйста, загляните в мой код один раз –

+0

Да, вам нужно преобразовать свое изображение в строку, используя функцию, упомянутую выше. – Shruti

+0

я изменил свой код и попытался еще показывает нулевое значение в базе данных защищенного недействительный onActivityResult (интермедиат requestCode, внутр ResultCode, Намерение данные) { \t \t если (requestCode == CAMERA_REQUEST && ResultCode == RESULT_OK) { \t \t \t Растровое изображение = (растровое изображение) data.getExtras(). Get ("data"); \t \t \t imageView.setImageBitmap (фото); \t \t \t ByteArrayOutputStream baos = new ByteArrayOutputStream(); \t \t \t photo.compress (Bitmap.CompressFormat.PNG, 100, baos); \t \t \t байт [] b = baos.toByteArray(); \t \t \t image_str = Base64.encodeToString (b, Base64.DEFAULT); \t \t} \t} и params.add (новый BasicNameValuePair ("изображение", image_str)); –

0

попытаться преобразовать изображение в base_64, а затем отправить на PHP, чтобы сохранить его в MySQL и при чтении с MySQL вы должны декодировать его

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