5

説明が言うように、私は Android で写真を撮っています。圧縮されてbyte[]thenに追加されbase64encodedます。JSONを使用して Web サービスに送信し、そこでデコードしてSQL テーブル rowに保存することが「想定」されています。エンコードされた文字列を別の行に保存できるので、そこに到達していることがわかります。

誰でもこれを見て、どこが間違っているのか教えてもらえますか? ※コード長めですみません。助けを求められたら何かを逃したくない!

アンドロイド側

@Override
    protected String doInBackground(String... args) {
        // TODO Auto-generated method stub
        // Check for success tag

        int success;
        stream = new ByteArrayOutputStream();
        picture.compress(Bitmap.CompressFormat.JPEG, 50, stream);
        image = stream.toByteArray();

        String ba1 = Base64.encodeToString(image, Base64.DEFAULT);

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainScreen.this);
        String post_username = sp.getString("username", "anon");

        try {
            ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("username", post_username));
            params.add(new BasicNameValuePair("picture", ba1));

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


            success = json.getInt(TAG_SUCCESS);
            if (success == 1) {
                Log.d("Picture Added!", json.toString());
                //finish();
                return json.getString(TAG_MESSAGE);
            } else {
                Log.d("Upload Failure!", json.getString(TAG_MESSAGE));
                return json.getString(TAG_MESSAGE);

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

        return null;

    }

    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();
        if (file_url != null) {
            Toast.makeText(MainScreen.this, file_url, Toast.LENGTH_LONG)
                    .show();
        }

    }
}

}

PHP 側

<?php
require("config.inc.php");
if (!empty($_POST)) {
    $user = $_POST['username'];
    $data = $_POST['picture'];
    $data = base64_decode($data);
    $im = imagecreatefromstring($data);
    header('Content-Type: image/jpeg', true);
    ob_start();
    imagejpeg($im);
    $imagevariable = ob_get_contents();
    ob_end_clean();

$query = "INSERT INTO pictures ( username, photo, rawdata ) VALUES ( :user, :photo, :raw ) ";

$query_params = array(
    ':user' => $user,
    ':photo' => $imagevariable,
    ':raw' => $_POST['picture']
);

try {
    $stmt   = $db->prepare($query);
    $result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
    $response["success"] = 0;
    $response["message"] = "Database Error. Couldn't add post!";
    die(json_encode($response));
}
$response["success"] = 1;
$response["message"] = "Picture Successfully Added!";
echo json_encode($response);

} else {
}
?>
4

1 に答える 1