任意文件转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;