-1

我已经开发了使用 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();

我的问题是:上面的代码大部分时间都有效,但并非每次都有效。有时它会上传文件,有时不会。谁能告诉我为什么会这样?

4

2 回答 2

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();
于 2013-05-11T07:26:00.967 回答
1
gameScore.saveInBackground();

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

gameScore.saveInBackground(new SaveCallback() {

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

您也可以使用saveEventually方法。这种方法的优点是它会在网络连接恢复时调用尝试更新对象,并且如果您在保存过程之间关闭应用程序,Parse 框架将保存它并在任何时候尝试保存对象用户返回到应用程序。

于 2013-05-11T06:20:27.397 回答