Android - Parse.com上传文件问题

时间:2013-05-11 06:14:58

标签: android parse-platform

我开发了使用Android Parse API上传文件的代码。

我的代码如下:

String name = "" + IMGname;
ParseFile file = new ParseFile(name.toLowerCase(), byteArray);
String encodedString = Base64.encodeToString(byteArray, Base64.DEFAULT);

ParseObject gameScore = new ParseObject("UserDetails_New");
gameScore.put("userName", "" + userName.getText().toString().toLowerCase());

gameScore.put("userPhotoProfile", file);

gameScore.saveInBackground();

我的问题是:上面的代码大部分时间都有效,但不是每次都有效。有时它上传文件,有时不上传。任何人都可以告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

gameScore.saveInBackground();

而不是尝试监听结果回调。这样你就可以弄清楚文件保存过程出了什么问题。

gameScore.saveInBackground(new SaveCallback() {

    @Override
    public void done(ParseException arg0) {
        if( arg0 != null )
        {
            //Handle Error here
        }
    }
});

您还可以使用saveEventually方法。这种方法的优点是,当网络连接恢复时,它将调用try来更新Object,如果你在保存过程之间关闭应用程序,Parse框架将保持这个并且将尝试保存Object用户返回到应用程序。

答案 1 :(得分:1)

我已经使用file.saveInBackground();

解决了这个问题

这意味着我们必须首先使用以下代码上传文件:

byte[] data = "Working at Parse is great!".getBytes();
ParseFile file = new ParseFile("resume.txt", data);
file.saveInBackground();
保存完成后

执行以下步骤

ParseObject jobApplication = new ParseObject("JobApplication");
jobApplication.put("applicantName", "Joe Smith");
jobApplication.put("applicantResumeFile", file);
jobApplication.saveInBackground();

所以,我的答案是:

String name = "" + IMGname;
                ParseFile file = new ParseFile(name.toLowerCase(), byteArray);
                file.saveInBackground();

                ParseObject gameScore = new ParseObject("UserDetails_New");
                gameScore.put("userName", "" + userName.getText().toString().toLowerCase());

                gameScore.put("userPhotoProfile", file);

                gameScore.saveInBackground();