从Unity上传到Parse使文件损坏

时间:2014-05-25 09:54:19

标签: c# file-upload unity3d parse-platform texture2d

我想弄清楚如何将图像从Unity上传到Parse但没有运气?我想我是以正确的方式做到这一点,但一定是在途中遗漏了什么?

我是这样做的:

void ConvertTexture2D(){
    byte[] data = userImage.EncodeToPNG();
    ParseFile file = new ParseFile("user.png", data);
    Task saveTask = file.SaveAsync();

    ParseQuery<ParseObject> query = ParseObject.GetQuery("Players");
    query.GetAsync(Constant.ParseID).ContinueWith(t =>
                                                  {
        PlayerData = t.Result;
        UpdateOldUser(file);

    });
}

void UpdateOldUser(ParseFile file){
    PlayerData.SaveAsync().ContinueWith(t =>
                                        {
        PlayerData["profileimg"] = file;
        PlayerData.SaveAsync();
    });
}

userImage是Texture2D。

结果如下:http://files.parse.com/c8f1e3e7-d8e6-4fba-84c3-168d0153350d/dc1001fb-db2d-43bc-934d-ca70c0b8198e-user.png

我真的希望能得到快速的帮助。我被困在这里: - /

提前致谢; - )

2 个答案:

答案 0 :(得分:0)

文件未损坏。一切都很好。只是Parse数据浏览器没有显示具有正确http标头的图像。您可以通过使用wget:

抓取图像来验证图像
wget http://files.parse.com/c8f1e3e7-d8e6-4fba-84c3-168d0153350d/dc1001fb-db2d-43bc-934d-ca70c0b8198e-user.png

我可以看到它是一张望着窗外的照片。

答案 1 :(得分:0)

您应该在调用PlayerData.SaveAsync()之前设置PlayerData。ContinueWith

void UpdateOldUser(ParseFile file){

PlayerData["profileImage"] =file;

            PlayerData.SaveAsync ().ContinueWith (task => {


                if (task.IsCanceled) {
                    // the save was cancelled.
                } else if (task.IsFaulted) {


                        // print parse exception
                        foreach(var e in task.Exception.InnerExceptions) {
                            ParseException parseException = (ParseException) e;
                            Debug.Log("Error message " + parseException.Message);
                            Debug.Log("Error code: " + parseException.Code);
                        }

                } else {
                }
            });
       }