Intereting Posts
Сохранять переменные из MySQL лучше выбирать переменные класса PHP, когда имена полей таблицы идентичны именам переменных класса? Передать переменную Javascript в PHP через ajax Могу ли я изменить принятые расширения PHP? Отладка ошибки PHP в IIS (как это связано с вызовами com-объектов) нужны некоторые советы по значению формы Drupal $ Получение имен параметров из запроса SOAP с расширением PHP SOAP? Получить большой миниатюры видео в facebook с использованием графика извлечь имя файла из пути Удалить строку содержит определенные слова / фразы с помощью PHP Обход веб-сайта, получение ссылок, сканирование ссылок с помощью PHP и XPATH wp_insert_post с формой Мобильное GPS-приложение Как обновить изображение на сервере через форму и отобразить его после отправки? Доступ к дочернему объекту из родительской области Неопределенное смещение при доступе к элементу массива, который существует

Android-приложение для отправки изображения в MySQL

У меня есть приложение для Android, которое отправляет изображение в мою базу данных;

public class NewProductActivity extends Activity { // Progress Dialog private ProgressDialog pDialog; public String image_str; JSONParser jsonParser = new JSONParser(); EditText inputName; EditText inputPrice; EditText inputDesc; EditText inputImg; Button btnTakePhoto; ImageView imgTakenPhoto; private static final int CAM_REQUREST = 1313; // url to create new product private static String url_create_product = "http://buiud.com/android_connect/create_product.php"; // JSON Node names private static final String TAG_SUCCESS = "success"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_product); // Edit Text inputName = (EditText) findViewById(R.id.inputName); inputPrice = (EditText) findViewById(R.id.inputPrice); inputDesc = (EditText) findViewById(R.id.inputDesc); //inputImg = (EditText) findViewById(R.id.imageView1); Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want. byte[] byte_arr = stream.toByteArray(); image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); // Create button Button btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct); // button click event btnCreateProduct.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // creating new product in background thread new CreateNewProduct().execute(); } }); btnTakePhoto = (Button) findViewById(R.id.button1); imgTakenPhoto = (ImageView) findViewById(R.id.imageView1); btnTakePhoto.setOnClickListener(new btnTakePhotoClicker()); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAM_REQUREST) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); imgTakenPhoto.setImageBitmap(thumbnail); } } class btnTakePhotoClicker implements Button.OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAM_REQUREST); } } /** * Background Async Task to Create new product * */ class CreateNewProduct extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(NewProductActivity.this); pDialog.setMessage("Creating Product.."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } /** * Creating product * */ protected String doInBackground(String... args) { String name = inputName.getText().toString(); String price = inputPrice.getText().toString(); String description = inputDesc.getText().toString(); //String image_str = inputImg.getText().toString(); // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("name", name)); params.add(new BasicNameValuePair("price", price)); params.add(new BasicNameValuePair("description", description)); params.add(new BasicNameValuePair("img",image_str)); //params.add(new BasicNameValuePair("image", image)); // getting JSON Object // Note that create product url accepts POST method JSONObject json = jsonParser.makeHttpRequest(url_create_product, "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(), AllProductsActivity.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(); } } } 

Даже я думал, что я хочу, чтобы изображение было .png оно появилось в базе данных как .bin, как я могу это изменить, я прочитал о вводе чего-то, когда приложение вызывало create.php, но не сигары. Я даже не могу отображать .bin как изображение на странице HTML.

Solutions Collecting From Web of "Android-приложение для отправки изображения в MySQL"

Поскольку ваше изображение закодировано в Base64, вам необходимо декодировать его на стороне сервера и сохранить его как файл PNG.

 <?php $decoded=base64_decode($encodedString); file_put_contents('newImage.PNG',$decoded); ?> 

См. http://php.net/fr/base64_decode

  <?php $name = $_POST['image']; $entry = base64_decode($name); $image = imagecreatefromstring($entry); $directory = dirname(__FILE__).DIRECTORY_SEPARATOR."images/".DIRECTORY_SEPARATOR."index".$title.".jpeg"; header ( 'Content-type:image/jpeg' ); $imagetojpg=imagejpeg($image, $directory); imagedestroy($image ); readfile ($directory); exit (); ?> 

Это должно работать fine.image – это переменная, которая содержит строку с кодировкой base64.