通过 base64 导入上传文件

任意文件转base64

<div>
<td><INPUT id="myFile" name="myFile" style="WIDTH: 68px"  type="file"/></td>
<td><span class="separator"></span></td>

</div>

// An highlighted block
function fn_Upload_Pictures()
{
$("#myFile").change(function()   //前端html页面 file类型input 标签的id
		{				
		var img_div = $(".img_div");
		
		var filepath = $("input[name='myFile']").val();
		var tmpFile = this.files[0];//获取文件名称和扩展名
		var name = tmpFile.name;
		var size = tmpFile.size;
		//var type = tmpFile.type;
		//获取文件后缀名
		var fileName =name.lastIndexOf(".");//
		var fileNameLength = name.length;//
		var fileFormat = name.substring(fileName + 1, fileNameLength);//
		var username = UCML.UserInfo.getUserId() //上传人
		var upload_date =  getDate()
		//var str = tmpFile.split(',');		
		var reader = new FileReader();
		reader.readAsDataURL(tmpFile);
	    reader.onload = function (e) 
	    {
	    	var url="";
	    	var savefilename = generateUUID()+"."+fileFormat
	    	var file_path ="eee/"+savefilename;
	    	
		    url = e.target.result;//获取base64
			CallBase64StringToFile(url,savefilename)//类似ajax的请求后端 传 url 就是拿到文件转的base64编码 交给后端处理保存到项目文件夹
			//syncCallinsertLIS_IMPORT_Excel(file_path,fileFormat,name,upload_date,username)
			CallinsertLIS_IMPORT_Excel(file_path,fileFormat,name,upload_date,username)//类似ajax的请求后端  数据库插入上传的资料文件名,类型,时间,上传作者
			
     
			
		} 						
	});		
	
	
	return false;		
}


function base64ToBlob(code) {
                let parts = code.split(';base64,');
                let contentType = parts[0].split(':')[1];
                let raw = window.atob(parts[1]);
                let rawLength = raw.length;

                let uInt8Array = new Uint8Array(rawLength);

                for(let i = 0; i < rawLength; ++i) {
                    uInt8Array[i] = raw.charCodeAt(i);
                }
                return new Blob([uInt8Array], {type: contentType});
            }

后端 拿到base64进行文件操作(这里是C# java也可以一样的原理)
这里的代码就是上面js CallBase64StringToFile 请求的后端代码。

// 
    /// <summary>
        /// Base64字符串转文件并保存
        /// </summary>
        /// <param name="base64String">base64字符串</param>
        /// <param name="fileName">保存的文件名</param>
        /// <returns>是否转换并保存成功</returns>
			 string opResult = "false";
            try
            {
                string strDate = DateTime.Now.ToString("yyyyMMdd");
              //  string fileFullPath = "~/upload7/"; //+ strDate;//文件保存路径
                string fileFullPath = Server.MapPath("~/upload/eee"); //存储在服务器的路径bai
                if (!Directory.Exists(fileFullPath))
                {
                    Directory.CreateDirectory(fileFullPath);
                }
 
                string strbase64 = base64String.Trim().Substring(base64String.IndexOf(",") + 1);   //将‘,’以前的多余字符串删除
                MemoryStream stream = new MemoryStream(Convert.FromBase64String(strbase64));
                FileStream fs = new FileStream(fileFullPath + "\\" + fileName, FileMode.OpenOrCreate, FileAccess.Write);
                byte[] b = stream.ToArray();
                fs.Write(b, 0, b.Length);
                fs.Close();
 
                opResult = "true";
            }
            catch (Exception e)
            {
               /* logger.Error("异常类型: \t" + e.GetType());
                logger.Error("异常描述:\t" + e.Message);
                logger.Error("异常方法:\t" + e.TargetSite);
                logger.Error("异常堆栈:\t" + e.StackTrace);*/
               return e.GetType()+":"+e.Message+":"+e.TargetSite+":"+e.StackTrace;
               
            }
            return opResult;
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值