Сохранение файла jpg с облачным кодом Parse-Server - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь сохранить файлы jpg с облачным кодом на сервере разбора ...

На Android я могу сделать это таким образом

Bitmap bitmap = ((BitmapDrawable) myImageView.getDrawable()).getBitmap();

ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                    byte [] byteArrayPhotoUpdate = stream.toByteArray();
                    final ParseFile pictureFileParse = new ParseFile( newUserInfo.getObjectId() + ".JPEG",byteArrayPhotoUpdate);

     newUserInfo.put("profile_picture",pictureFileParse);
     newUserInfo.saveInBackground();

Но я понятия не имею, как это сделать в облачном коде. Я называю свои функции облачного кода такими:

HashMap<String, String> params = new HashMap();

ParseCloud.callFunctionInBackground("myCloudFuncion", params, new FunctionCallback<String>() {
         @Override
          public void done(String aFloat, ParseException e) {

                }
            }); 

но я понятия не имею, как передать растровое изображение в параметры hashmap. Я уже искал в Интернете, но ничего, что я нашел, не помогло, ссылки, которые ссылаются на что-то полезное, уже старые и устаревшие, с эпохи старого разбора ...

В Разбор документов Я нашел это

    var base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
    var file = new Parse.File("myfile.txt", { base64: base64 });

Что меня смутило, потому что я не знаю, относятся ли 2 параметра "base64" к типу переменной или base64

Должен ли я преобразовать свое растровое изображение в base64 и отправить его в качестве параметра в облачный код?

Если вы прошли через это и знаете, как, я буду очень рад узнать ваше решение. Спасибо!

1 Ответ

0 голосов
/ 15 сентября 2018

вам нужно конвертировать растровое изображение для base64 следующим образом:

            Bitmap bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap();

            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte [] byteArrayPhotoUpdate = stream.toByteArray();
            String encodedfile = new String(Base64.encodeBase64(byteArrayPhotoUpdate), "UTF-8");

А затем отправьте вашу строку base64 в параметрах, например:

 HashMap<String, String> params = new HashMap();
 params.put("fileInfo",encodedfile);
 ParseCloud.callFunctionInBackground("saveParseUserInfo", params, new FunctionCallback<String>() {
                    @Override
                    public void done(String aFloat, ParseException e) {

                     Log.i("ewaeaweaweaweawe", "done: " + aFloat);
                    }
                });

Теперь в вашем облачном коде используйте это:

Parse.Cloud.define("saveParseUserInfo", function(request, response) {
                var userId = request.user.id;
                var base64 = request.params.fileInfo;
                var userClass = Parse.Object.extend("User");
                //create a user object to set ACL
                var userObject = userClass.createWithoutData(userId);

                //create new ParseObject
                var userPublicClass = Parse.Object.extend("userPublic");
                var userPublic = new userPublicClass();
                var aclAction = new Parse.ACL(userObject);
                aclAction.setPublicReadAccess(true);
                userPublic.setACL(aclAction);
                userPublic.set("name", "name random");
                userPublic.set("username", "username_random");
                //Now create a Parse File object
                var file = new Parse.File("photo.jpeg", { base64: base64 });
                //set file object in a colum profile_picture
                userPublic.set("profile_picture",file);
                //save
                userPublic.save(null, { useMasterKey: true,  
                success: function(actionSuccess) {  

                    response.success("saved!!");
                },
                error: function(action, error) {
                    // Execute any logic that should take place if the save fails.
                    // error is a Parse.Error with an error code and message.
                response.error(error.message);
            }
            });






            });     

Надеюсь, это поможет вам.

...