static WWWForm BuildForm(byte[] file, ThumbnailUploadPolicy policy) { var form = new WWWForm(); foreach (var field in policy.form) { form.AddField(field.Key, field.Value.ToString()); } form.AddBinaryData("file", file, policy.fileName, policy.contentType); return(form); }
IEnumerator Upload() { isProcessing = true; var getPolicyUrl = $"{Constants.VenueApiBaseUrl}/v1/upload/venue/thumbnail/policies"; var getPolicyWebRequest = ClusterApiUtil.CreateUnityWebRequest(accessToken, getPolicyUrl, UnityWebRequest.kHttpVerbPOST); getPolicyWebRequest.downloadHandler = new DownloadHandlerBuffer(); getPolicyWebRequest.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(payload))); getPolicyWebRequest.SendWebRequest(); while (!getPolicyWebRequest.isDone) { yield return(null); } if (getPolicyWebRequest.isNetworkError) { HandleError(new Exception(getPolicyWebRequest.error)); } else if (getPolicyWebRequest.isHttpError) { HandleError(new Exception(getPolicyWebRequest.downloadHandler.text)); } else { var json = getPolicyWebRequest.downloadHandler.text; ThumbnailUploadPolicy policy = null; try { policy = JsonConvert.DeserializeObject <ThumbnailUploadPolicy>(json); } catch (Exception e) { HandleError(e); yield break; } byte[] fileBytes = null; try { fileBytes = ReadFile(filePath); } catch (Exception e) { HandleError(e); yield break; } if (policy == null || fileBytes == null) { HandleError(new Exception("unknown error")); yield break; } var form = BuildForm(fileBytes, policy); var uploadFileWebRequest = UnityWebRequest.Post(policy.uploadUrl, form); uploadFileWebRequest.chunkedTransfer = false; uploadFileWebRequest.SendWebRequest(); while (!uploadFileWebRequest.isDone) { yield return(null); } if (uploadFileWebRequest.isNetworkError) { HandleError(new Exception(uploadFileWebRequest.error)); } else if (uploadFileWebRequest.isHttpError) { HandleError(new Exception(uploadFileWebRequest.downloadHandler.text)); } else { Debug.Log("Success Upload Thumbnail"); onSuccess?.Invoke(policy); } } isProcessing = false; }