Сервер Parse, сохраняющий изображения с Android, не работает

Я пытаюсь загрузить изображение на свой сервер синтаксического анализа в AWS и mongoLab. Однако всякий раз, когда я пытаюсь добавить изображение с помощью приведенного ниже кода, я получаю сообщение об ошибке, когда я пытаюсь сохранить объект без изображения, это удается. Я делаю что-то неправильно. Я пытаюсь больше 10 часов и не могу заставить его работать.

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");

        }

    }
});

person saner    schedule 26.03.2016    source источник
comment
Какую ошибку вы получаете?   -  person James    schedule 26.03.2016
comment
Вызовите свой SaveCallback для вашего ParseFile вместо ParseObject.   -  person Viveka Patel    schedule 26.03.2016


Ответы (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");

            }

        }
    });}
person Alex Chengalan    schedule 26.03.2016
comment
Привет, Алекс, нет, нота все еще работает, как я могу понять ошибку? - person saner; 26.03.2016
comment
Нет, по-прежнему нет, но функция upload() не запускается, ошибка в части сохранения файла. В первом saveCallBack он переходит к части ошибки. - person saner; 26.03.2016
comment
Я предполагаю, что это ошибка в parseServer, которая упоминается в ссылке: github.com/ParsePlatform /parse-server/issues/136 - person saner; 26.03.2016
comment
Когда вы добавляете контекст к созданию parseFile, он начинает работать, как показано ниже: image1 = new ParseFile(profilePhoto.png, byteArray, image/png); это ошибка parseServer, которая будет исправлена ​​в следующих версиях. Большое спасибо, Алекс. - person saner; 26.03.2016
comment
Ооо! Я какое-то время не был в сети, вот и я не видел твоих сообщений. В любом случае, приятно слышать, что это привело вас в правильном направлении. Удачного кодирования :) - person Alex Chengalan; 26.03.2016

Наконец, после нескольких часов усилий, я могу загрузить файл Parse в Parse DataBase. Шаги, которые необходимо выполнить: 1. Сначала напишите запрос на регистрацию. 2 - При успешном ответе на запрос регистрации вы получите идентификатор объекта текущего пользователя. 3- Затем создайте один пользовательский класс в базе данных Parse «profilePictureTable» и добавьте определенные столбцы 1- profilePicture. 2- идентификатор_пользователя. 4- Затем, наконец, вызовите обратный вызов SaveInBackground

Пример изображения, как оно будет выглядеть

    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");
            }
        }
    });
person Yash786    schedule 27.07.2016