El paso a paso o código que hallarás en este artículo es la resolución más eficiente y válida que hallamos a esta inquietud o dilema.
Solución:
Puede probar este método, que realmente funcionó para un proyecto. Primero debe elegir la imagen de la galería y luego debe convertirse a string y enviado por volea al servidor
// initialize
private int PICK_IMAGE_REQUEST = 1;
//set click listener
Upload.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
//method to upload the image
showFileChooser();
);
Método para abrir la galería y elegir la imagen.
private void showFileChooser()
Intent pickImageIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickImageIntent.setType("image/*");
pickImageIntent.putExtra("aspectX", 1);
pickImageIntent.putExtra("aspectY", 1);
pickImageIntent.putExtra("scale", true);
pickImageIntent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(pickImageIntent, PICK_IMAGE_REQUEST);
Agregue este método Aquí la imagen se envía al servidor.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null)
Uri filePath = data.getData();
try
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
Bitmap lastBitmap = null;
lastBitmap = bitmap;
//encoding image to string
String image = getStringImage(lastBitmap);
Log.d("image",image);
//passing the image to volley
SendImage(image);
catch (IOException e)
e.printStackTrace();
Método para codificar la imagen como string
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;
subiendo usando voley
private void SendImage( final String image)
final StringRequest stringRequest = new StringRequest(Request.Method.POST, "URL",
new Response.Listener()
@Override
public void onResponse(String response)
Log.d("uploade",response);
try
JSONObject jsonObject = new JSONObject(response);
catch (JSONException e)
e.printStackTrace();
,
new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
Toast.makeText(Edit_Profile.this, "No internet connection", Toast.LENGTH_LONG).show();
)
@Override
protected Map getParams() throws AuthFailureError
Map params = new Hashtable();
params.put("image", image);
return params;
;
int socketTimeout = 30000;
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
Debe comprender el concepto para usar la biblioteca de voleibol y la carga de imágenes. Aquí hay algunos otros enlaces útiles para la carga de imágenes y el uso de la biblioteca de voleibol.
biblioteca de voleibol
Carga de imágenes usando multiparte
Nota: También he probado que el código de tu tutorial está bien. Verifique la ruta de la imagen correctamente. Si es posible, utilice su código php en cualquier servidor web alojado. y verifique su respuesta json y verifique su parámetro que ha pasado con los parámetros del script del servidor.
Tienes la opción de avalar nuestra publicación poniendo un comentario o dejando una puntuación te damos las gracias.