2016-03-26 5 views
0

Ich versuche, ein Bild auf meinem Parse-Server auf AWS und MongoLab hochzuladen. Wenn ich jedoch versuche, das Bild mit dem unten stehenden Code einzufügen, erhalte ich einen Fehler. Wenn ich versuche, das Objekt ohne das Bild zu speichern, ist es erfolgreich. Mache ich etwas falsch. Ich versuche mehr als 10 Stunden und konnte es nicht funktionieren lassen.Parse Server Speichern von Bildern mit Android funktioniert nicht

ParseFile image1; 

Bitmap bm = BitmapFactory.decodeResource(getResources(), 
     R.drawable.ph); 

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bm.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 

image1 = new ParseFile("profilePhoto.png", byteArray); 
image1.saveInBackground(); 


JSONArray myFriendList = new JSONArray(); 
myFriendList.put("xxxxxxxxxxxxxxx"); 
myFriendList.put("yyyyyyyyyyyyyyy"); 

ParseObject userSettingObj = new ParseObject("userSetting"); 
userSettingObj.put("profileName", profileNameField.getText().toString()); 
userSettingObj.put("userid", ParseUser.getCurrentUser().getObjectId()); 
userSettingObj.put("name", nameField.getText().toString()); 
userSettingObj.put("surname", surnameField.getText().toString()); 
userSettingObj.put("friendList", myFriendList); 

userSettingObj.put("photo", image1); 

userSettingObj.saveInBackground(new SaveCallback() { 
    @Override 
    public void done(ParseException e) { 

     if (e == null) { 

      System.out.println("saved successfully"); 

     } else { 

      System.out.println("error while saving"); 

     } 

    } 
}); 
+1

Was ist der Fehler Sie bekommen? – James

+0

Rufen Sie Ihren _SaveCallback_ für Ihr _ParseFile_ anstelle von _ParseObject_ auf. –

Antwort

2

Versuchen Sie dies und lassen Sie es mich wissen.

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 
image1 = new ParseFile("profilePhoto.png", byteArray); 
image1.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 

      if (e == null) { 
    upload(); 
      } else { 

      } 

     } 
    }); 

    public void upload(){ 
JSONArray myFriendList = new JSONArray(); 
    myFriendList.put("xxxxxxxxxxxxxxx"); 
    myFriendList.put("yyyyyyyyyyyyyyy"); 

    ParseObject userSettingObj = new ParseObject("userSetting"); 
    userSettingObj.put("profileName", profileNameField.getText().toString()); 
    userSettingObj.put("userid", ParseUser.getCurrentUser().getObjectId()); 
    userSettingObj.put("name", nameField.getText().toString()); 
    userSettingObj.put("surname", surnameField.getText().toString()); 
    userSettingObj.put("friendList", myFriendList); 

    userSettingObj.put("photo", byteArray); 

    userSettingObj.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 

      if (e == null) { 

       System.out.println("saved successfully"); 

      } else { 

       System.out.println("error while saving"); 

      } 

     } 
    });} 
+0

Hallo Alex, nein, merke noch funktionierend, wie kann ich den Fehler verstehen? – saner

+0

Nein, immer noch nicht, aber die upload() - Funktion startet nicht, der Fehler ist in der Datei speichern Teil. Im ersten saveCallBack geht es zum Fehler-Teil. – saner

+0

Ich vermute, es ist ein Fehler in parseServer, der in der Verknüpfung erwähnt wird: https://github.com/ParsePlatform/parse-server/issues/136 – saner

0

schließlich nach wenigen Stunden Aufwand bin ich in der Lage eine Parse-Datei auf Parse DataBase Schritte zum Hochladen folgen: 1 - Schreiben Sie eine SignUp Abfrage zuerst. 2 - Bei erfolgreicher Antwort von SignUp Query erhalten Sie eine aktuelle Benutzerobjekt-ID. 3. Erstellen Sie dann eine benutzerdefinierte Klasse in der Parse-Datenbank "profilePictureTable" und fügen Sie Certain Columns 1- profilePicture hinzu. 2- Benutzerobjekt-ID. 4- Dann rufen Schließlich Rückruf SaveInBackground

Sample Image that how it will look a like

Bitmap bitmap = BitmapFactory.decodeFile("Your File Path"); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    final byte[] data = stream.toByteArray(); 


    final ParseFile file = new ParseFile("profile_pic.png", data); 

    file.saveInBackground(); 

    final ParseObject profilePicture = new ParseObject("profilePictureTable"); 
    profilePicture.put("profilePicture", file); 
    profilePicture.put("userObjectId",ParseUser.getCurrentUser().getObjectId()); 

    profilePicture.saveInBackground(new SaveCallback() 
    { 
     @Override 
     public void done(ParseException e) 
     { 
      if (e == null) 
      { 
       Log.i("Parse", "saved successfully"); 


      } 
      else 
      { 
       Log.i("Parse", "error while saving"); 
      } 
     } 
    }); 
Verwandte Themen