Android - 如何将动画 GIF 文件上传到 Parse Server

Android - How to upload an animated GIF file to Parse Server

我正在开发一个具有 Parse Server Android SDK 的应用程序,我知道如何将视频文件转换为 bytes[] 数组,这是我使用的代码:

private byte[] convertVideoToBytes(Uri uri){
        byte[] videoBytes = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            FileInputStream fis = new FileInputStream(new File(getRealPathFromURI(uri)));

            byte[] buf = new byte[1024];
            int n;
            while (-1 != (n = fis.read(buf)))
                baos.write(buf, 0, n);

            videoBytes = baos.toByteArray();
        } catch (IOException e) { e.printStackTrace(); }
        return videoBytes;
    }
    // GET VIDEO PATH AS A STRING -------------------------------------
    public String getRealPathFromURI(Uri contentUri) {
        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = ctx.getContentResolver().query(contentUri, filePathColumn, null, null, null);
        assert cursor != null;
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String filePath = cursor.getString(columnIndex);
        cursor.close();
        Log.i(TAG, "VIDEO PATH: " + filePath);
        return filePath;
    }


但是我无法上传 GIF 文件,我试过这段代码,但它没有任何作用,我的 .gif 文件的单元格在我的使用 saveInBackground():

在后台保存后数据库为空
Uri path = Uri.parse("android.resource://" + BuildConfig.APPLICATION_ID + "/" + R.drawable.my_animated_gif_from_drawable);
String gifPath = path.toString();

File file = new File(gifPath);
Log.i(TAG, "GIF PATH: " + file.getAbsolutePath());

ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
    int read;
    byte[] buff = new byte[1024];
    while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); }
    out.flush();
    byte[] bytes = out.toByteArray();

    ParseFile gifFile = new ParseFile(gifName + ".gif", bytes);
    bObj.put(BUZZ_GIF, gifFile);

} catch (FileNotFoundException ignored) {
} catch (IOException ignored) { }


有谁知道如何将 .gif 文件上传为 ParseFile,或者只是将其转换为 bytes[] 这样我就可以使用 新的 ParseFile 函数?

这里是上传gif文件到解析服务器的方法

File file = new File(path);
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                try {
                    BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));

                    int read;
                    byte[] buff = new byte[1024];
                    while ((read = in.read(buff)) > 0) {
                        out.write(buff, 0, read);
                    }
                    out.flush();
                    byte[] bytes = out.toByteArray();

                    image = new ParseFile(name, bytes);
                } catch (FileNotFoundException ex) {
                } catch (IOException ex) {
                }


 if (imageAttached) {
            String name = path.substring(path.lastIndexOf("/"));


            image = new ParseFile(name, Util.convertBitmapToBytes(bitmap));
            image.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (e == null) {
                        post.put(DuzooConstants.PARSE_POST_IMAGE, image);
                        post.pinInBackground(new SaveCallback() {
                            @Override
                            public void done(ParseException e) {
                                if (dialog.isShowing())
                                    dialog.dismiss();
                            }
                        });
                        post.saveInBackground();
                    }
                }
            });
        } else {
            post.pinInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (dialog.isShowing())
                        dialog.dismiss();
                    returnToHomeActivity();
                }
            });
            post.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                }
            });
        }
    }