2016-08-02 8 views
-1

i haben USERS Tabelle in Phpmyadmin Datenbank. In der Tabelle habe ich eine Spalte, die einen Link zum Benutzerprofilbild enthält. aber ich denke, das Bild, das ich hochlade, ist nicht gut. wenn ich es öffne ich sehe nur ein wenig Platz wie folgt aus:Hochladen Bild-Server und dann holen sie in android

enter image description here

EDIT: das Bild Teil befestigt ist

und wenn i`m versuchen, es mit zu holen Piccaso ich nichts. die Art, wie ich das Bild hochladen wird es auf String-Codierung und dekodieren sie dann in der register.php

Dies ist die Methode, die Zeichenfolge zu Bild konvertieren:

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; 
    } 

das ist mein php wo im Hochladen des Bildes:

$firstName = $_POST['firstname']; 
$lastName = $_POST['lastname']; 
$passWord = $_POST['password']; 
$phoneNumber = $_POST['phonenumber']; 
$apartmentNumber = $_POST['apartmentNumber']; 
$image = $_POST['image']; //this is the encoded string 

//upload image to image folder in the server  
$upload_folder = "upload"; 
$path = "$upload_folder/$phoneNumber.jpeg"; 
if(file_put_contents($path, base64_encode($image)) != flase){ 
    echo "uploaded"; 
} 
$image_link = "my url/$path"; 
$result = mysqli_query($con,"INSERT INTO Users (firstName, lastname, password, phone , apartmentNum,image) 
     VALUES ('$firstName', '$lastName', '$EncryptPassword', '$phoneNumber', '$apartmentNumber' ,'$image_link')"); 

dies ist die PHP wo i`m die json Objekt erstellt:

$sql = ("select * from Users where phone = '$phone' and password = '$password' "); 

$check = mysqli_fetch_array(mysqli_query($con,$sql)); 

if(isset($check)){ 
    $hasApartment = mysqli_query($con,$sql); 
    $row = mysqli_fetch_assoc($hasApartment); 
    $apartmentNumber = $row['apartmentNum']; 
     $firstName = $row['firstName']; 
     $lastName = $row['lastname']; 
     $image = $row['image']; 
echo '{"query_result":"SUCCESS", "apartmentNumber":' . $apartmentNumber.' , "firstName":' . trim($firstName) .' ,"lastName":' . trim($lastName).', "image":' . $image.'}'; 

     } 

Ich erhalte diese Ausnahme:

org.json.JSONException: Unterminated object at character 102 of {"query_result":"SUCCESS", "apartmentNumber":54 , "firstName":a ,"lastName":a, "image":XXXXXX.XX.XX/upload/112.jpeg} 

das ist das JSON-Objekt:

{ "query_result": "SUCCESS", "Apartmentnummer": 54 " firstName ": a," lastName ": a," bild ": XXXXXX.XX.XX/upload/112.jpeg}

char 102 ist das" u "in u pload

Dies ist whers ich eine Anfrage zu tun bekommen. In onResponse() Ich versuche, die json Text als JSON-Objekt zu behandeln:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         try { 

          String query_result = response.getString("query_result"); 
          switch (query_result){ 
           case "SUCCESS": // user name and password exists and mathces and user associated with apartment 
            int apartmentNum = Integer.parseInt(response.get("apartmentNumber").toString()); 

            Intent intent = new Intent(LoginActivityScreen.this , HomeActivityScreen.class); 

            SharedPreferences.Editor editor = preferences.edit(); 

            editor.putString("phoneNumber" , PhoneValidationActivity.PHONE_NUMBER); 
            editor.putString("firstName", response.getString("firstName")); 
            editor.putString("lastName", response.getString("firstName")); 
            editor.putBoolean("loggedIn", true); 
            editor.putInt("apartmentNumber", apartmentNum); 

            Bitmap profilePicture = Picasso.with(context).load("http://roomates.96.lt/upload/0547517307.jpeg").get(); 

            editor.apply(); 

            startActivity(intent); 
            break; 

           case "FAILURE": //user name or password are incorrect 
            Toast.makeText(getApplicationContext(), "wrong name or password", Toast.LENGTH_SHORT).show(); 
            break; 
           default: 
            break; 
          } 

         } catch (JSONException e) { //this exception is caught 
          e.printStackTrace(); 
          Log.e("e" , e.toString()); 
         } catch (IOException e) { 
          e.printStackTrace(); 
          Log.e("e", e.toString()); 
         } 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 
     MySingleton.getInstance(context).addToRquestQueue(jsonObjectRequest); 
    } 
+0

SQL-Injection-FTW –

+0

'das ist mein php wo im Hochladen des Bildes:'. Nein. Das ist ein PHP-Skript, das das Bild empfängt und dann etwas damit macht. – greenapps

+0

'bin Hochladen ich es ok?'.Woher sollen wir das wissen? Es gibt keinen Code zum Hochladen. – greenapps

Antwort

0
String query_result = response.getString("query_result") 

Sehen Sie die diference zwischen "query_result":"SUCCESS" und "image":XXXXXX.XX.XX/upload/112.jpeg?

syntaktisch?

0

Wenn Sie Fehler in der JSON-Antwort auf Bildpfad erhalten, sollten Sie einfach json_encode Ihre Antwort auf diese Weise alle Sonderzeichen werden ordnungsgemäß entkam.

In Sie JSON-Antwort Ihres Bildpfad XXXXXX.XX.XX/upload/112.jpeg sollte wie diese XXXXXX.XX.XX/upload/112.jpeg entwertet werden.

Ich hoffe, es hilft Ihnen.

Verwandte Themen