- Home /
error uploading file to parse with unity 5.1.1f1
I am using Parse for a game that I'm developing. Everything is ok until I try to uplad a file, no matters his extension I always get this Error : "get_version can only be called from main thread"!
byte[] data = System.Text.Encoding.UTF8.GetBytes("Working at Parse is great!");
ParseFile file = new ParseFile("resume.txt", data);
Task saveTask = file.SaveAsync();
var player = new ParseObject ("FilesLibrary");
player ["Number"] = 155;
player ["Files"] = file;
saveTask = player.SaveAsync();
I have tried to place this script in different places : { Main, Start, Update, Awake, Button's OnClick event, Couroutine, Queue ... } But I always get the same problem.
And the most weird thing is that the same script works fine with unity 4.6 but not 5.1 !
Answer by Meltdown · Nov 05, 2015 at 03:14 AM
You need to save the file to Parse first, before you can save it to the Player object... here is some code on how to do this...
// The file first needs to be uploaded to Parse before it can be saved to the object in the database
ParseFile _playerFile;
public void CreatePlayer()
{
StartCoroutine (UploadPlayerFile ((response) => {
if(response == 1)
StartCoroutine(CreateProjectAsync());
else
Debug.LogError("The file could not be uploaded");
}));
}
IEnumerator UploadPlayerFile(Action <int> callback)
{
var fileBytes = System.IO.File.ReadAllBytes (@"C:\myfile.jpg");
_playerFile = new ParseFile ("file.jpg", fileBytes, "image/jpeg");
var saveTask = _playerFile.SaveAsync ();
while (!saveTask.IsCompleted)
yield return null;
if (saveTask.IsFaulted) {
Debug.LogError ("An error occurred while uploading the player file : " + saveTask.Exception.Message);
callback (-1);
} else {
callback (1);
}
}
IEnumerator CreateProjectAsync()
{
ParseObject player = new ParseObject ("Player");
player ["Number"] = 111;
player ["Files"] = _playerFile;
var saveTask = player.SaveAsync ();
while (!saveTask.IsCompleted)
yield return null;
if (saveTask.IsFaulted) {
Debug.LogError ("An error occurred while creating the player object : " + saveTask.Exception.Message);
} else {
Debug.Log ("Player created successfully");
}
}
Your answer
Follow this Question
Related Questions
get_version can only be called from the main thread. 0 Answers
xml : FormatException: Input string was not in the correct format 1 Answer
SetBlendShapeWeight can only be called from main thread 0 Answers
"...can only be called from the main thread" - MultiThreading 1 Answer
Parse Database in WebGL 0 Answers