tutorialspoint studio simple parser getjsonarray example consumir array android json

studio - save json android



¿Cómo puedo agregar un archivo de imagen al objeto json? (3)

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

También deberías echar un vistazo a las siguientes publicaciones:

Espero que esto ayude.

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

Intenté debajo del código pero no está funcionando? Como quiero enviar ese objeto json al servidor, el servidor leerá mi archivo de imagen y lo almacenará en esa base de datos.

JSONObject test = new JSONObject(); test.put("photo",new File(// Here i set image uri));

Entonces, cuando imprimo este objeto json, solo me muestra la ruta de la imagen donde se almacenó la imagen. Quiero un archivo para enviarlo al servidor.


Solo está agregando el objeto File al objeto JSON. El objeto Archivo solo contiene metainformación sobre el archivo: Ruta, nombre, etc.

Debe cargar la imagen y leer los bytes desde ella. Luego 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!"; } ?>