- 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
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                