Immagine indice indefinito in php

Innanzitutto, vorrei descrivere qual è il problema che sto affrontando qui.

Voglio archiviare il path dell'image da android a MySQL e archiviare l'image nella directory di PhotoUpload.

Quando si fa clic sul button di invio, tutto l' listItem viene salvato in MySQL .

Attività A

inserisci la descrizione dell'immagine qui

  public void uploadImageAndText(ArrayList<ImageAndText> listItems, final String id) { JSONArray jsonArray = new JSONArray(); try { for (ImageAndText i : listItems) { JSONObject object = new JSONObject(); String type = i.getType(); String[] Type = type.split(":"); object.put("type", Type[1]); Toast.makeText(getApplicationContext(), Type[1], Toast.LENGTH_LONG).show(); String amount = i.getAmount(); String[] Amount = amount.split(":"); object.put("amount", Amount[1]); String description = i.getDescription(); String[] Description = description.split(":"); object.put("description", Description[1]); Bitmap uploadImage = i.getImage(); String image = getStringImage(uploadImage); object.put("image", image); object.put("ts_id", id); jsonArray.put(object); } } catch (JSONException e) { e.printStackTrace(); } AddStaff ru = new AddStaff(jsonArray); ru.execute(); } class AddStaff extends AsyncTask<String, Void, String> { ProgressDialog loading; JSONArray jsonArray; AddStaff(JSONArray jsonArray) { this.jsonArray = jsonArray; } @Override protected void onPreExecute() { super.onPreExecute(); loading = ProgressDialog.show(AddClaims.this, "Please Wait", null, true, true); } @Override protected String doInBackground(String... params) { HashMap<String, String> data = new HashMap<String, String>(); data.put("listItems", jsonArray.toString()); RequestHandler rh = new RequestHandler(); String result = rh.sendPostRequest(Configs.STAFF_BENEFIT, data); return result; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); loading.dismiss(); Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); } } public String getStringImage(Bitmap bmp) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] imageBytes = baos.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); return encodedImage; } } 

php

 <?php if( $_SERVER['REQUEST_METHOD']=='POST' ){ if( !empty( $_POST['listItems'] ) ){ $mysqli = new mysqli("127.0.0.1:3307", "root", "", "androiddb"); if( $mysqli->connect_errno ) echo "Failed to connect to MySQL"; $image = $_POST['image']; $listItems = json_decode( $_POST['listItems'], true ); $sql="SELECT id FROM staff_benefit ORDER BY id ASC"; $id=0; $res=$mysqli->query( $sql ); while( $rs=$res->fetch_object() ) $id=$rs->id; $path="$id.png"; $actualpath="http://192.168.107.115:80/Android/CRUD/PhotoUpload/$path"; $sql="INSERT INTO `staff_benefit` ( `type`, `amount`, `description`, `image`, `ts_id` ) VALUES ( ?, ?, ?, ?, ? )"; $stmt=$mysqli->prepare( $sql ); $pathelements=arrays( realpath( $_SERVER['DOCUMENT_ROOT'] ), 'CRUD', 'PhotoUpload', '' ); $savepath = realpath( implode( DIRECTORY_SEPARATOR, $pathelements ) ) . "{$id}.png"; $bytes=file_put_contents( $savepath, base64_decode( $image ) ); if( !$bytes ){ echo 'Error saving image'; } if ( $stmt && $bytes ) { foreach( $listItems as $item ){ $stmt->bind_param('sssss', $item['type'], $item['amount'], $item['description'], $actualpath, $item['ts_id'] ); $res=$stmt->execute(); if( !$res ) echo 'Query failed with code: '.$stmt->errno; } } $mysqli->close(); } } ?> 

Questo è quello che mi aspettavo

inserisci la descrizione dell'immagine qui

Errore

Indice indefinito: image in C: …… Errore nel salvataggio delle immagini

Questa è la row 10 $image = $_POST['image'];

So che sto ricevendo questo messaggio di errore è perché io listItem solo listItem ma nessuna image. Il mio problema è come posso rompere l'image in listItem e quindi decodificarla?

Qualcuno può aiutarmi per come archiviare l'arrayslist (con l'image) in MySQL? Grazie mille

Seguo questo tutorial , ma il problema è che memorizza un singolo file, non arraysList!

Dato che non sei definito in questa $image = $_POST['image']; , perché non aggiungi image nel tuo doInBackground ?

Prova questo

  @Override protected String doInBackground(String... params) { HashMap<String, String> data = new HashMap<String, String>(); data.put("listItems", jsonArray.toString()); data.put(Configs.KEY_IMAGE,imagess); RequestHandler rh = new RequestHandler(); String result = rh.sendPostRequest(Configs.STAFF_BENEFIT, data); return result; }