Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo puedo añadir un archivo de imagen al objeto json?

Quiero agregar un archivo de imagen al objeto json. ¿Es posible agregar un archivo de imagen en el objeto json?

He intentado por debajo del código, pero no funciona? Porque quiero enviar ese objeto de json al servidor entonces el servidor leerá mi archivo de la imagen y almacenaré en esa base de datos.

  • Cambiar el color del cursor de un EditText en Android a través de todo el sdk
  • WebView en problemas con NestedScrollView
  • ¿Cómo manejar idiomas mixtos RTL y LTR en las notificaciones?
  • ¿Cómo crear un archivo en el almacenamiento interno de Android?
  • WebView loadUrl sólo funciona una vez
  • Vista personalizada con diseño XML en Android
  • JSONObject test = new JSONObject(); test.put("photo",new File(// Here i set image uri)); 

    Así que cuando imprimo este objeto json sólo me muestra la ruta de la imagen donde se almacena la imagen. Quiero archivo para enviarlo al servidor.

  • SetOnClickListener y setOnLongClickListener llamada en cuestión de botón único
  • ¿Por qué está presente el botón de arriba sin setDisplayHomeAsUpEnabled ()?
  • Llamar al método de eliminación en el proveedor de contenido personalizado
  • ¿Cómo puedo evitar que el menú desplegable de autocompletado aparezca cuando el texto esté programado?
  • Añadir indicador de carga / barra de progreso a Phonegap Pantalla de bienvenida de Android
  • Android FragmentTabHost: No se conoce ninguna pestaña null
  • 3 Solutions collect form web for “¿Cómo puedo añadir un archivo de imagen al objeto json?”

    Necesitará leer los bytes de ese File en un byte[] y poner ese objeto en su JSONObject .

    También debe echar un vistazo a los siguientes mensajes:

    • ByteArray en JSON
    • Datos binarios en cadena JSON. Algo mejor que Base64
    • Biblioteca de BSON para java

    Espero que esto ayude.

    Sólo agrega el objeto File al objeto JSON. El objeto File sólo contiene información meta sobre el archivo: Path, nombre y así sucesivamente.

    Debe cargar la imagen y leer los bytes de ella. A continuación, coloque estos bytes en el objeto JSON.

     public class UploadToServer extends Activity { TextView messageText; Button uploadButton; int serverResponseCode = 0; ProgressDialog dialog = null; String upLoadServerUri = null; /********** File Path *************/ final String uploadFilePath = "/mnt/sdcard/"; final String uploadFileName = "Quotes.jpg"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_upload_to_server); uploadButton = (Button) findViewById(R.id.uploadButton); messageText = (TextView) findViewById(R.id.messageText); messageText.setText("Uploading file path :- '/mnt/sdcard/" + uploadFileName + "'"); /************* Php script path ****************/ upLoadServerUri = "http://192.1.1.11/hhhh/UploadToServer.php"; uploadButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...", true); new Thread(new Runnable() { public void run() { runOnUiThread(new Runnable() { public void run() { messageText.setText("uploading started....."); } }); uploadFile(uploadFilePath + "" + uploadFileName); } }).start(); } }); } public int uploadFile(String sourceFileUri) { String fileName = sourceFileUri; HttpURLConnection connection = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; File sourceFile = new File(sourceFileUri); if (!sourceFile.isFile()) { dialog.dismiss(); Log.e("uploadFile", "Source File not exist :" + uploadFilePath + "" + uploadFileName); runOnUiThread(new Runnable() { public void run() { messageText.setText("Source File not exist :" + uploadFilePath + "" + uploadFileName); } }); return 0; } else { try { // open a URL connection to the Servlet FileInputStream fileInputStream = new FileInputStream( sourceFile); URL url = new URL(upLoadServerUri); // Open a HTTP connection to the URL connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); // Allow Inputs connection.setDoOutput(true); // Allow Outputs connection.setUseCaches(false); // Don't use a Cached Copy connection.setRequestMethod("POST"); connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("ENCTYPE", "multipart/form-data"); connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); connection.setRequestProperty("uploaded_file", fileName); dos = new DataOutputStream(connection.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); // dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" // + fileName + "\"" + lineEnd); dos.writeBytes("Content-Disposition: post-data; name=uploadedfile;filename=" + URLEncoder.encode(fileName, "UTF-8") + lineEnd); dos.writeBytes(lineEnd); // create a buffer of maximum size bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // read file and write it into form... 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); } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) int serverResponseCode = connection.getResponseCode(); String serverResponseMessage = connection.getResponseMessage(); Log.i("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); if (serverResponseCode == 200) { runOnUiThread(new Runnable() { public void run() { String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" + " http://www.androidexample.com/media/uploads/" + uploadFileName; messageText.setText(msg); Toast.makeText(UploadToServer.this, "File Upload Complete.", Toast.LENGTH_SHORT) .show(); } }); } // close the streams // fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { dialog.dismiss(); ex.printStackTrace(); runOnUiThread(new Runnable() { public void run() { messageText .setText("MalformedURLException Exception : check script url."); Toast.makeText(UploadToServer.this, "MalformedURLException", Toast.LENGTH_SHORT) .show(); } }); Log.e("Upload file to server", "error: " + ex.getMessage(), ex); } catch (Exception e) { dialog.dismiss(); e.printStackTrace(); runOnUiThread(new Runnable() { public void run() { messageText.setText("Got Exception : see logcat "); Toast.makeText(UploadToServer.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show(); } }); Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e); } dialog.dismiss(); return serverResponseCode; } // End else block } 

    ARCHIVO PHP

     <?php $target_path = "./Upload/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } ?> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.