0

私はアンドロイドの初心者です。画像をmysqlサーバーにアップロードしようとしています。私のアプリでは、ユーザーがボタンをクリックするたびに画像をアップロードするという名前のボタンがあり、Android デバイスでカメラが開きます。imageview でカメラを使用してキャプチャされた画像を正常に取得しています。この画像を php を使用して mysql データベースに保存したいのですが、php を使用してデータベースに正常に接続し、edittext に入力されたいくつかのフィールドをアップロードしていますが、画像をアップロードできません。私はそれをグーグルで検索しましたが、すべてがURL付きのアップロード画像を表示しています。しかし、私の場合、私のコードを見て少し違うので、助けてください。

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 データベースに保存する方法がわかりません。

4

2 に答える 2

1

これを試して :

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;
        }
于 2013-09-17T06:14:35.983 に答える
0

画像をbase_64に変換してからPHPに送信してMySQLに保存し、MySQLから読み取るときにデコードする必要があります

于 2013-10-14T11:55:52.277 に答える