123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using System.Text;
- using System.Collections;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.EventSystems;
- using SFB;
- using UnityEngine.Networking;
- using System.IO;
- using System;
- using Newtonsoft.Json;
- using System.Text.RegularExpressions;
- public class FileBrowserController : MonoBehaviour, IPointerDownHandler
- {
- public InputField inputField;
- // Warning: paths returned by FileBrowser dialogs do not contain a trailing '\' character
- // Warning: FileBrowser can only show 1 dialog at a time
- #if UNITY_WEBGL && !UNITY_EDITOR
- //
- // WebGL
- //
- [DllImport("__Internal")]
- private static extern void UploadFile(string gameObjectName, string methodName, string filter, bool multiple);
- public void OnPointerDown(PointerEventData eventData) {
- UploadFile(gameObject.name, "OnFileUpload", ".png, .jpg", false);
- Debug.Log("OnPointerDown");
- }
- // Called from browser
- public void OnFileUpload(string url) {
- StartCoroutine(UpLoadUserData(url));
- }
- #else
- //
- // Standalone platforms & editor
- //
- public void OnPointerDown(PointerEventData eventData) { }
- void Start()
- {
- var button =GetComponent<Button>();
- button.onClick.AddListener(OnClick);
- }
- //public void OpenFileBrowser()
- //{
- // ShowLoadDialogCoroutine($"Выбор объекта", new ExtensionFilter("Vuforia Files", "xml", "dat"));
- //}
- #endif
- public void OnClick()
- {
- // Open file
- string[] paths = new string[0];
- paths = StandaloneFileBrowser.OpenFilePanel($"Выбор изображения", "", "png,jpg", false);
-
- if (paths.Length > 0)
- {
- Debug.Log(paths[0]);
- StartCoroutine(UpLoadUserData(paths[0]));
- }
- }
- /// <summary>
- /// Отправка файла на сервер
- /// </summary>
- /// <param name="url"></param>
- /// <returns></returns>
- IEnumerator UpLoadUserData(string url)
- {
- // Debug.Log(url);
- WWWForm form = new WWWForm();
- UnityWebRequest www;
- string file_name;
- string php = "";
- if (Application.platform == RuntimePlatform.WebGLPlayer)
- {
- var deserialize = JsonConvert.DeserializeObject<List<urls>>(url);
- file_name = deserialize[0].file_name;
- Debug.Log($"file image {file_name}");
- var base64 = Regex.Match(deserialize[0].base64, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;//match.Groups["type"].Value;
- //string base64 = deserialize[0].base64.Substring(deserialize[0].base64.IndexOf(',') + 1);
- //base64 = base64.Trim('\0');
- byte[] bytes = Convert.FromBase64String(base64);// Encoding.UTF8.GetBytes(deserialize[0].base64);
- Debug.Log($"bytes {bytes.Length}");
- form.AddBinaryData("file", bytes, deserialize[0].file_name);
- php = $"{Application.streamingAssetsPath}/upload.php";
- }
- else
- {
- file_name = Path.GetFileName(url);
- using (FileStream fstream = File.OpenRead(url))
- {
- // преобразуем строку в байты
- byte[] bytes = new byte[fstream.Length];
- fstream.Read(bytes, 0, bytes.Length);
- form.AddBinaryData("file", bytes, file_name);//{Path.GetExtension(url)}
- php = $"http://dev.prmsys.net/positionviewer/StreamingAssets/upload.php";
- }
- }
- www = UnityWebRequest.Post(php, form);
- yield return www.SendWebRequest();
- if (www.isHttpError)
- Debug.Log(www.error);
- else
- {
- Debug.Log("Uploaded");
- inputField.text = $"{Application.streamingAssetsPath}/{file_name}";
- EditorController.instance.UpdatePanel();
- Debug.Log(www.downloadHandler.text);
- }
-
- }
- class urls
- {
- public string file_name { get; set; }
- public string base64 { get; set; }
- }
- }
|