Subir varios archivos de imagen al servidor php desde la aplicación android
Soy nuevo a la programación del androide. He estado intentando cargar varias imágenes de mi aplicación al servidor usando el siguiente código. Aquí la matriz de la imagen [] se fija al servidor con otros datos como username, contraseña, etc que está en namevaluepair.
Código Java:
- Sube una foto de la cámara al servidor PHP
- Proteger la solicitud HTTP de ser llamada por otros
- Solicitud de Android KSOAP2 al servidor SOAP de PHP
- ¿Dónde ejecutar algoritmos complejos? Lado del servidor o lado del cliente?
- Ejecutar Gps como servicio de fondo y enviar coordenadas al servidor web (PHP)
public void post(String url, List<NameValuePair> nameValuePairs) { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); try { MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE); for (int index = 0; index < nameValuePairs.size(); index++) { if (nameValuePairs.get(index).getName() .equalsIgnoreCase("image[]")) { // If the key equals to "image[]", we use FileBody to transfer // the data Log.d("key", "image"); Log.d("image path", nameValuePairs.get(index).getName()); entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File(nameValuePairs.get(index) .getValue()))); } else { // Normal string data Log.d("tag", nameValuePairs.get(index).getName()); // Log.d("tag", nameValuePairs.get(index).getValue()); entity.addPart( nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue())); } } httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); HttpEntity enttiy = response.getEntity(); Log.d("server response to post data", EntityUtils.toString(enttiy)); } catch (IOException e) { e.printStackTrace(); } }
Código Php (versión de trabajo):
<?php $target_path = "user_uploaded_photos/"; for($i=0;$i<count($_FILES["image"]["name"]);$i++){ $fileData = pathinfo(basename($_FILES["image"]["name"][$i])); $username = $_POST['username']; print_r($fileData); $date = date('Y_m_d_H_i_s'); $newfilename = $username.$i.$date.".".$fileData['extension']; if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path."/".$newfilename)) { echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />"; } else { echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />"; } } $location = $_POST['location']; //other fields and database operations ommitted
Mi problema es con el sitio web cakephp que estamos usando. Para el php de la torta uso pares del valor del nombre como sigue:
nameValuePair .add(new BasicNameValuePair("UserDatum[user_id]", "2"));
Enviar valores de cadena como este funciona para mí. Pero cuando declaro imágenes [] las imágenes de la matriz se suben pero no se puede acceder desde $ _FILES. He declarado las imágenes [] array de la siguiente manera:
for (String s : imagePath) { nameValuePair.add(new BasicNameValuePair("UserDatum[images][]", s)); Log.d("image-path", s); }
Aquí imagePath es arrayList de cadena que contiene la ruta de las imágenes. Está declarando "UserDatum [images] []" en app la forma correcta de hacerlo? Funciona con el php publicado, pero en PHP php sólo se colocan valores de cadena y no imágenes. He intentado otras bibliotecas como ion . Pero solo puedo subir una foto sin usar la estructura de la matriz. Favor de comentar o señalarme la dirección correcta para publicar varias imágenes y cadenas en una sola publicación.
- ¿Qué es un token API?
- Mantener sesión entre llamadas HttpUrlConnection (Native / Webview)
- Java.lang.String no se puede convertir a JSONObject desde Android
- ¿Cómo puedo enviar el texto hindi al servidor php mediante HttpUrlConnection en Android
- Android JSON HttpClient para enviar datos al servidor PHP con HttpResponse
- Mejor tutorial para android PHP y mysql
- Verificación de la firma de facturación de Android en la aplicación en el servidor php
- Modelo de autenticación para la aplicación de Android
Cada vez que publico datos de imágenes de una aplicación, utilizo la imagen codificada en Base64 (vea: Android publica la cadena Base64 en PHP )
Eso podría darle una mejor ruta.
- ¿Se necesita Android GRALLOC?
- Muestra una fuente de video de gstreamer en Google Cartón SurfaceTexture