UnityWeb端读取本机文件

js代码

ClickSelectFileBtn: function () {
	
		function sendMessageToUnity(s) {
			//发送给unity
			unityInstance.SendMessage("WebSocket", "GetBase64", s);
		}

		//<input type="file" id="files" style="display:none" accept="text/plain" onchange="fileImport()">			

		var doc = document.getElementById('files');
		if (doc != null) 
		{
		doc.parentNode.removeChild(doc);//相同数据流不会执行onchange;删除节点重新生成
		}
		
		//if (doc == null) {
			doc = document.createElement("input")
			doc.type = "file";
			doc.id = "files";
			doc.style = "display:none";//隐藏网页按钮
			doc.accept = "text/plain";//限定显示文件类型
//https://stackoverflow.com/questions/11832930/html-input-file-accept-attribute-file-type-csv
			doc.onchange = fileImport;
			document.body.appendChild(doc);
			console.log("createElement");
		//}
		console.log("createElement22");
		doc.click();
	
	function fileImport () {
		console.log("fileImport");
			//获取读取我文件的File对象
			var selectedFile = document.getElementById('files').files[0];
			if (selectedFile != null) {
			console.log(selectedFile);
				var reader = new FileReader();
				reader.readAsDataURL(selectedFile);
				reader.onload = function (e) {
					var base64Str = e.currentTarget.result.substring(e.currentTarget.result.indexOf(',') + 1);
					arr = [];
					step = 3000;
					for (var i = 0, l = base64Str.length; i < l; i += step) {
						arr.push(base64Str.slice(i, i + step))
					}
					sendMessageToUnity("Start");
					for (i = 0; i < arr.length; i++) {
						sendMessageToUnity(arr[i]);
					}
					sendMessageToUnity("End");
				}
			}
		}
}

C#代码

[DllImport("__Internal")]
        private static extern void ClickSelectFileBtn();
public void OnClickSelectFileBtn(ISetText value)
    {
        iSetText = value;
        ClickSelectFileBtn();
    }
    StringBuilder stringBuilder = new StringBuilder();
    public void GetBase64(string base64Str)
    {
        if (base64Str == "Start")
        {
            stringBuilder.Clear();
        }
        else if (base64Str == "End")
        {
            byte[] bs = Convert.FromBase64String(stringBuilder.ToString());

//比如String 或 图片之类的   System.Text.Encoding.UTF8.GetString(bs);
           
        }
        else
        {
            stringBuilder.Append(base64Str);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值