¿Cómo publicar pares clave / valor con una subida de archivo en android

Sé que esto es la pregunta de la repetición. Hay muchas preguntas similares están allí en desbordamiento de la pila pero estoy haciendo esta pregunta porque no entiendo cómo puedo fijar algunos datos con imagen.

Quiero pasar el nombre y el apellido con la imagen al servidor. Todavía ahora he intentado esto.

URL connectURL; connectURL = new URL("some URL"); File sdImageMainDirectory = new File("/sdcard"); String existingFileName = sdImageMainDirectory.toString() +"/image.jpg"; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; String Tag="3rd"; try { HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); DataOutputStream dos = new DataOutputStream( conn.getOutputStream() ); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"firstname\"" + lineEnd); dos.writeBytes("Dharmendra"); dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"lastname\"" + lineEnd); dos.writeBytes("Patel"); dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName +"\"" + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName +"\"" + lineEnd); dos.writeBytes(lineEnd); int bytesAvailable = fileInputStream.available(); int maxBufferSize = 1024; int bufferSize = Math.min(bytesAvailable, maxBufferSize); byte[] buffer = new byte[bufferSize]; int bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); fileInputStream.close(); dos.flush(); dos.close(); }catch (MalformedURLException ex) { Log.e(Tag, "error: " + ex.getMessage(), ex); } catch (IOException ioe) { Log.e(Tag, "error: " + ioe.getMessage(), ioe); } 

2 Solutions collect form web for “¿Cómo publicar pares clave / valor con una subida de archivo en android”

Compruebe este código para agregar valores adicionales a la carga de imagen en el servidor:

 public class Task_TurnoutPost extends AsyncTask<Void, Void, Void> { private final ProgressDialog dialog = new ProgressDialog(ActivityName.this); JSONObject object_feed; // can use UI thread here protected void onPreExecute() { this.dialog.setMessage("Loading..."); this.dialog.setCancelable(false); this.dialog.show(); } @Override protected Void doInBackground(Void... arg0) { // TODO Auto-generated method stub try { HttpClient httpClient = new DefaultHttpClient(); HttpPost postRequest = new HttpPost("Your LINK"); MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); reqEntity.addPart("F_Name", new StringBody("F_Name")); reqEntity.addPart("L_Name",new StringBody("L_NAME")); try{ ByteArrayOutputStream bos = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.JPEG, 75, bos); byte[] data = bos.toByteArray(); ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg"); reqEntity.addPart("picture", bab); }catch(Exception e){ //Log.v("Exception in Image", ""+e); reqEntity.addPart("picture", new StringBody("")); } postRequest.setEntity(reqEntity); HttpResponse response = httpClient.execute(postRequest); BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String sResponse; StringBuilder s = new StringBuilder(); while ((sResponse = reader.readLine()) != null) { s = s.append(sResponse); } object_feed = new JSONObject(s.toString()); success_response=object_feed.getString("status"); Log.v("Response for POst", s.toString()); } catch (Exception e) { Log.e("e.getClass().getName()", ""+e); } return null; } @Override protected void onPostExecute(Void result) { if (this.dialog.isShowing()) { this.dialog.dismiss(); } } } 

Donde bitmap es tu como Bitmap. Además de añadir una biblioteca y descargarla

Marque esto para su referencia

En realidad, utilizaría los encabezados HTTP aquí para publicar los pares de valores clave. Me gusta esto

 conn.setRequestProperty("firstName", "Stephen"); conn.setRequestProperty("lastName", "glansburg"); 

Entonces en su lado del servidor usted puede apenas mirar los encabezados del HTTP para esa información del meta.

  • Retrofit Image Upload dar error
  • Java.io.IOException: final inesperado de la secuencia
  • Editar encabezados de MultiPartEntity
  • ¿Qué son exactamente MultiPartEntity y datos de formulario? ¿Cómo se utilizan para cargar imágenes en android?
  • Enviar archivos multiparte con retrofit: 2.0.0-beta1
  • Android con Retrofit2 OkHttp3 - Error POST de varias partes
  • Cómo subir imagen de mapa de bits desde un dispositivo Android?
  • Android sube video a un servidor remoto usando datos de formulario multipart HTTP
  • Realización de una solicitud de publicación de varias partes con matriz de bytes comprimidos jpeg con resorte para android
  • ¿Cómo subir datos de formulario de múltiples partes y la imagen al servidor en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.