6

安卓

这就是我将 ParseFile List 存储到 ParseObject 中的方式

ParseObject pObject = new ParseObject();    
ArrayList<ParseFile> pFileList = new ArrayList<ParseFile>();
    for (String thumbPath : thumbList) {
       byte[] imgData = convertFileToByteArray(thumbPath);
       ParseFile pFile = new ParseFile("mediaFiles",imgData);
       pFileList.add(pFile);    
    }

       pObject.addAll("mediaFiles", pFileList); 
       pObject.saveEventually();

在此调用之后,它不会在数据浏览器中显示插入的行,尽管它在表中显示为 1 的行数

这就是我检索它并从列表中获取第一张图像的方式

List<ParseFile> pFileList = (ArrayList<ParseFile>) pObject.get("mediaFiles");
    if (!pFileList.isEmpty()) {
          ParseFile pFile = pFileList.get(0);
          byte[] bitmapdata = pFile.getData();  // here it throws error
          bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
    }

我能够检索所有 String 列,但是对于“mediaFiles”列,在执行 getData() 时我得到了这个异常。 com.parse.ParseException:目标主机不能为空,或在参数中设置。

我观察到在 ParseFile 中,数据和 url 为空。

有人可以向我展示如何将多个 ParseFile 对象存储和检索到单个 ParseObject 中的代码吗?

4

4 回答 4

3

在将 ParseFiles 与 Parse Object 关联之前,尝试使用 save 方法上传 ParseFiles。

于 2013-07-14T05:53:07.847 回答
0

尝试做这件事作为一个又一个上传图片,

   public void UploadImageToParse(String img_path, final String filedName, String Filename) {
        //String img_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "P200913_1908.jpg";

        final File file = new File(img_path);
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            Bitmap bitmap = BitmapFactory.decodeStream(fileInputStream);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] image_array = baos.toByteArray();
            final ParseFile parsefile = new ParseFile(Filename, image_array);
            parsefile.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (e != null) {

                    } else {

                        frameInfo.put(filedName, parsefile);
                        frameInfo.saveInBackground(new SaveCallback() {
                            @Override
                            public void done(ParseException e) {
                                if (e == null) {
                                    DebugLog.e("" + e);

                                } else {
                                    fileUploadStatusUpdater.onFailure();
                                    DebugLog.e("File Upload Fail");
                                }
                            }
                        });
                        /*ParseUser user = ParseUser.getCurrentUser();
                        user.put(filedName, parsefile);
                        user.saveInBackground(new SaveCallback() {
                            @Override
                            public void done(ParseException e) {
                                Log.e("", "" + e);
                            }
                        });*/
                    }
                }

            }, new ProgressCallback() {
                @Override
                public void done(Integer integer) {
                    if (integer == 100) {
                        DebugLog.e("File Upload Completed");
                        fileUploadStatusUpdater.onSuccess();
                    }
                }
            });
        } catch (Exception e) {
            DebugLog.e("Fis" + e);
            fileUploadStatusUpdater.onFailure();
        }
于 2015-11-06T06:06:22.023 回答
0

覆盖 byte[] bitmapdata = pFile.getData(); try catch 下的代码行。它对我有用!

于 2015-12-29T15:37:03.983 回答
-1
final ParseFile parseFile1 = new ParseFile("poll_image1.jpg",scaleImage("poll_image1",imageList.get(contestImage1.getId())));
                        final ParseFile parseFile2 = new ParseFile("poll_image2.jpg",scaleImage("poll_image2",imageList.get(contestImage2.getId())));
                        parseFile1.save(); parseFile2.save();

                        List<ParseFile> listOfFiles = new ArrayList<ParseFile>();
                        listOfFiles.add(parseFile1);
                        listOfFiles.add(parseFile2);


                        ParseObject jobApplication = new ParseObject("Poll");
                        jobApplication.put("poll_question", contestQuestion.getText().toString());
                        jobApplication.put("poll_type_id", 1);
                        ParseUser currentUser = ParseUser.getCurrentUser();
                        jobApplication.put("user", currentUser);
                        jobApplication.put("parseFile", listOfFiles);
                        jobApplication.saveInBackground(new SaveCallback() {

                            @Override
                            public void done(ParseException arg0) {

                            }
                        });

上面的代码进行了多次上传,但 ParseObject 仅在两个 save() 方法之后调用。由于两个保存方法 UI 卡住了。如何解决它!

于 2014-06-09T13:49:50.540 回答