欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 用Base64實現(xiàn)文件上傳

 更新時間:2020年08月04日 11:00:53   作者:Charles_Su  
這篇文章主要介紹了c# 用Base64實現(xiàn)文件上傳的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

    Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,它是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法。

    使用base64進(jìn)行文件上傳的具體流程是:前臺使用js將文件轉(zhuǎn)換為base64格式,后臺通過高級編程語言,將base64格式的文件,轉(zhuǎn)換為原文件。下面就來演示一下,C#語言配合js,如何實現(xiàn)圖片的base64格式上傳與解析保存。

    首先看一下前臺是如何將文件讀取到的,請先看如下js代碼:

var DataforUp = "";
 var reader = new FileReader(); //聲明文件讀取對象
//聲明文件讀取完畢后調(diào)用的方法,通過this.result獲取到轉(zhuǎn)換的數(shù)據(jù)對象
 reader.onload = function () {
  DataforUp = this.result;
 };
//當(dāng)用戶選擇文件后,進(jìn)行轉(zhuǎn)換數(shù)據(jù)的操作
 $("#file").change(function () {
  reader.readAsDataURL(this.files[0]);
 });

    文件的讀取,需要借助于FileReader這個對象,DataforUp用于保存base64源碼。#file該id對應(yīng)文件選擇標(biāo)簽。

    FileReader對象有個onload事件,當(dāng)讀取文件的時候(或者說調(diào)用readAsDataURL方法后),會觸發(fā)此事件,base64轉(zhuǎn)換的源碼就存在于它的result屬性中。

    下面具體解釋一下上述代碼:

    當(dāng)用戶選擇文件后,使用FileReader對象讀取文件,讀取后自動轉(zhuǎn)換為base64格式,然后觸發(fā)該對象的onload方法,將轉(zhuǎn)換后的base64源碼保存下來。

    這樣我們就拿到了base64格式的文件源碼,通過ajax,就可以將文件發(fā)送到后臺。

    接下來看一下后臺是如何解析并保存的:

public string SaveImgBaseSixFour(string img,string obj)
{
 if(img==null){
 return "數(shù)據(jù)為空";
 }
 string result = img;
 int index = -1;
 //判斷是不是base64文件類型
 index = img.IndexOf("base64,");
 if (index != -1)
 {
  index += 7;
 //將數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制字節(jié)數(shù)組
 var imgbit = Convert.FromBase64String(img.Substring(index));
 //生成文件名
 string imgname = DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg";
 //保存圖片
 using (Image image=Image.FromStream(new MemoryStream(imgbit)))
  {
   image.Save(_rootPath+imgname,ImageFormat.Jpeg);
  }
 }
}

    base64源碼的基本模型是 data:image/png;base64,...文件碼...=

    data標(biāo)識文件類型,緊接著base64,開頭的文件源碼最后以=結(jié)束,所以解析的時候要去掉開頭這一部分,本案例圖片擴展名是寫死的,也可以通過base64文件頭去獲取圖片的擴展名,此處不再詳細(xì)介紹。

    解析一下代碼流程:

    判斷文件是否為空,然后獲取到真正數(shù)據(jù)的開始索引,然后調(diào)用Convert.FromBase64String方法將base64轉(zhuǎn)換為原文件,然后通過文件流將內(nèi)存中保存的文件數(shù)據(jù)真實保存到本地​。具體使用方法,讀者可自行查閱官方文檔,此處不再贅述​。

以上就是c# 用Base64實現(xiàn)文件上傳的詳細(xì)內(nèi)容,更多關(guān)于c# Base64文件上傳的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論