2016-03-26 29 views
0

我想上傳一個圖像到我的解析服務器上的AWS和mongoLab。但是,無論何時我嘗試使用下面的代碼添加圖像時,出現錯誤,當我嘗試保存沒有圖像的對象時,它會成功。難道我做錯了什麼。我正在嘗試超過10個小時,但無法完成工作。解析服務器保存圖像與Android不工作

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

什麼是錯誤您收到? – James

+0

爲_ParseFile_而不是_ParseObject_調用_SaveCallback_。 –

回答

2

試試這個,讓我知道。

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

你好亞歷克斯,不要,仍然注意工作,我怎麼能理解錯誤? – saner

+0

不,仍然沒有,但upload()函數沒有啓動,錯誤在文件保存部分。在第一個saveCallBack中,它轉到錯誤部分。 – saner

+0

我想這是在鏈接中提到的parseServer中的一個錯誤:https://github.com/ParsePlatform/parse-server/issues/136 – saner

0

最後經過幾個小時的努力,我已經上傳文件解析解析上的數據庫 步驟如下:1 - 寫註冊查詢第一。 2 - 關於SignUp Query的成功響應,您將獲得當前用戶對象ID。 3-然後在解析數據庫「profilePictureTable」中創建一個自定義類並添加某些列1- profilePicture。 2- userObjectId。 4-然後最後調用回調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"); 
      } 
     } 
    });