Ich bin neu in Android-Programmierung. Ich habe versucht, mehrere Bilder von meiner App auf den Server mit dem folgenden Code hochzuladen. Hier wird das image [] Array auf den Server mit anderen Daten wie Benutzername, Passwort, usw. in Namevaluepair gepostet.Laden Sie mehrere Bild-Datei auf PHP-Server von Android App
Java-Code:
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();
}
}
PHP-Code (Arbeitsversion):
<?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
Mein Problem ist, mit der CakePHP Website, die wir verwenden. Für Kuchen php verwende ich Name-Wert-Paare wie folgt:
nameValuePair
.add(new BasicNameValuePair("UserDatum[user_id]", "2"));
Senden Zeichenfolge Werte wie folgt funktioniert für mich. Aber wenn ich Bilder [] deklariere, werden Array-Bilder hochgeladen, aber von $ _FILES kann nicht darauf zugegriffen werden. Ich habe Bilder [] Array wie folgt deklariert:
for (String s : imagePath) {
nameValuePair.add(new BasicNameValuePair("UserDatum[images][]",
s));
Log.d("image-path", s);
}
Hier ImagePath ist ArrayList der Zeichenfolge mit Pfad der Bilder. Erklärt "UserDatum [Bilder] []" in App den richtigen Weg? Es funktioniert mit dem geposteten PHP, aber in Cake php werden nur String-Werte gepostet und keine Bilder. Ich habe andere Librarys wie ion versucht. Aber ich kann nur ein Foto ohne Array-Struktur hochladen. Bitte kommentiere oder weise mich auf die richtige Richtung, um mehrere Bilder und Strings in einem einzigen Beitrag zu veröffentlichen.
Gibt es überhaupt nichts in $ _FILES, wenn Sie die Daten von Ihrer Android-App senden? – burzum
in Kuchen php Server gibt es in $ _FILES und in der Posted PHP-Code es funktioniert wie ein Charme alles ist in Ordnung –
Hinweis: echo $ _FILES ['Bild'] ['Name'] [$ i] 'könnte nicht sein sicher. – klenium