JS使用base64格式上傳文件
本文實(shí)例為大家分享了JS使用base64格式上傳文件的具體代碼,供大家參考,具體內(nèi)容如下
html頁(yè)面
<input type="file" id="fielinput" /> <img id="txshow" style="width:100px;height:100px;"/> <br/>解析之后的base64數(shù)據(jù):<br/> <p id="data"></p>
js部分
/***
?*?
?* FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,
?* 使用 File 或 Blob 對(duì)象指定要讀取的文件或數(shù)據(jù)。
? ?其中File對(duì)象可以是來(lái)自用戶在一個(gè)<input>元素上選擇文件后返回的FileList對(duì)象,
? ?也可以來(lái)自拖放操作生成的 DataTransfer對(duì)象,還可以是來(lái)自在一個(gè)HTMLCanvasElement上執(zhí)行mozGetAsFile()方法后返回結(jié)果
*/
/**
?* FileReader() 構(gòu)造函數(shù)
?*?
?* 屬性
?* ? ? ?FeileReader.error只讀,表示讀取文件失敗時(shí)發(fā)生的錯(cuò)誤
?* ? ? ?FeileReader.readyState只讀,readyState代表數(shù)字,狀態(tài)
?* ? ? ? ? EMPTY => 0 => 還未加載任何數(shù)據(jù) ?
?* ? ? ? ? LOADINF => 1 => 正在加載
?* ? ? ? ? DONE => 2 => 已經(jīng)全部讀取完成
?* ? ? ?FeileReader.result只讀,
?* ? ? ? ? ?文件的內(nèi)容,這個(gè)屬性要在讀取完成(也就是readyState變?yōu)?時(shí))后才有效。
?*?
?* 事件處理事件
?* ? ? ?FeileReader.onabort?
?* ? ? ? ? ?處理abort事件,在讀取操作中如果要中斷(終止)執(zhí)行的事件
?* ? ? ?FeileReader.error
?* ? ? ? ? ?在讀取時(shí)如果發(fā)生錯(cuò)誤時(shí)會(huì)觸發(fā)
?* ? ? ?FeileReader.onload
?* ? ? ? ? ?處理load事件,在讀取操作完成時(shí)觸發(fā)的(成功時(shí)若有提示框彈出成功等字樣,寫在這里)
?* ? ? ? ? ?FeileReader.onload = function(){}
?* ? ? ?FeileReader.onloadStart?
?* ? ? ? ? ?在開始讀取的時(shí)候觸發(fā)
?* ? ? ?FeileReader.onloadEnd
?* ? ? ? ? ?在讀取操作結(jié)束的時(shí)候觸發(fā)
?* ? ? ?FeileReader.onProgess
?* ? ? ? ? ?該事件在讀取blob時(shí)觸發(fā)
?*?
?* 方法
?* ? ? ?FeileReader.abort()
?* ? ? ? ? ?中止讀取操作。在返回時(shí),readyState屬性為DONE。
?* ? ? ?FeileReader.readAsArrayBuffer()
?* ? ? ? ? ?開始讀取指定的Blob中的內(nèi)容,一旦完成,result屬性中保存的將是被讀取文件的ArrayBuffer數(shù)據(jù)對(duì)象
?* ? ? ?FileReader.readAsBinaryString()
?* ? ? ? ? ?開始讀取指定的Blob中的內(nèi)容,一旦完成,result屬性中將包含所讀取文件的原始二進(jìn)制數(shù)據(jù)
?* ? ? ?FileReader.readAsDataURL()
?* ? ? ? ? ?開始讀取指定的Blob中的內(nèi)容,一旦完成,result屬性中將包含一個(gè)data: URL格式的Base64字符串表示所讀取文件的內(nèi)容
?* ? ? ? ? ?1. readAsDataURL?
?* ? ? ? ? ?方法會(huì)讀取指定的 Blob 或 File 對(duì)象。讀取操作完成的時(shí)候,readyState 會(huì)變成已完成DONE,并觸發(fā) loadend 事件,
?* ? ? ? ? ?同時(shí) result 屬性將包含一個(gè)data:URL格式的字符串(base64編碼)以表示所讀取文件的內(nèi)容。
?* ? ? ? ? ?參數(shù): 即將被讀取的 Blob 或 File 對(duì)象。
?* ? ? ?FileReader.readAsText()?
?* ? ? ? ? ?開始讀取指定的Blob中的內(nèi)容,一旦完成,result屬性中將包含一個(gè)字符串來(lái)表示讀取的文件內(nèi)容
?* ?
?*?
?*?
?* **/
var input = document.getElementById("fielinput");
input.addEventListener('change', readFile, false);
function readFile() {
? ?var file = this.files[0];
? ? //判斷是否是圖片類型
? ? /*if (!/image\/\w+/.test(file.type)) {
? ? ?alert("只能選擇圖片");
? ? ?return false;
? ? ?}*/
? ? var reader = new FileReader(); // 返回一個(gè)新的FileReader函數(shù)
? ? reader.readAsDataURL(file);
? ? reader.onloadstart = function (e){?
? ? ? ? console.log(e)
? ? ? ? console.log('開始了')
? ? }
? ? reader.onprogress = function(e){
? ? ? ? console.log(e)
? ? }
? ? reader.onload = function (e) {
? ? ? ? console.log(e);
? ? ? ? console.log(reader.result);
? ? ? ? txshow.src = this.result;
? ? ? ? document.getElementById("data").innerText=this.result.substring(this.result.indexOf(',')+1);
? ? }
? ? reader.onloadend = function(e){
? ? ? ? console.log(e)
? ? ? ? console.log('結(jié)束了')
? ? }
}
小提示
function fileFormData(files){
? ? console.log(this.files[0])
? ? console.log(files.target.files[0])
}在上傳文件中,this.files[0]全等于files.target.files[0]的
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 簡(jiǎn)單實(shí)現(xiàn)js上傳文件功能
- JS中使用FormData上傳文件、圖片的方法
- js獲取上傳文件的絕對(duì)路徑實(shí)現(xiàn)方法
- 一個(gè)簡(jiǎn)單的jQuery插件ajaxfileupload.js實(shí)現(xiàn)ajax上傳文件例子
- js實(shí)現(xiàn)點(diǎn)擊按鈕彈出上傳文件的窗口
- file控件選擇上傳文件確定后觸發(fā)的js事件是哪個(gè)
- js判斷上傳文件后綴名是否合法
- 使用ajaxfileupload.js實(shí)現(xiàn)ajax上傳文件php版
- jQuery實(shí)現(xiàn)jQuery-form.js實(shí)現(xiàn)異步上傳文件
- js獲取判斷上傳文件后綴名的示例代碼
相關(guān)文章
js實(shí)現(xiàn)盒子移動(dòng)動(dòng)畫效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)盒子移動(dòng)動(dòng)畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
BetterScroll 在移動(dòng)端滾動(dòng)場(chǎng)景的應(yīng)用
BetterScroll 是一款重點(diǎn)解決移動(dòng)端各種滾動(dòng)場(chǎng)景需求的開源插件( GitHub地址 ),非常不錯(cuò),下面腳本之家小編給大家分享BetterScroll 在移動(dòng)端滾動(dòng)場(chǎng)景的應(yīng)用,一起看看吧2017-09-09
淺析Echarts圖表渲染導(dǎo)致內(nèi)存泄漏的原因及解決方案
在今年某個(gè)可視化大屏項(xiàng)目中,出現(xiàn)了一個(gè)問(wèn)題,項(xiàng)目在運(yùn)行一段時(shí)間后,頁(yè)面出現(xiàn)了崩潰,而且是大概運(yùn)行幾天之后,因?yàn)榇笃另?xiàng)目是部署到客戶現(xiàn)場(chǎng)大屏,長(zhǎng)時(shí)間運(yùn)行不關(guān)閉,小編認(rèn)為 Echarts 圖表渲染導(dǎo)致了內(nèi)存泄漏,本文將深入分析這一問(wèn)題,并提供解決方案2023-10-10
超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法
超強(qiáng)的IE背景圖片閃爍(抖動(dòng))的解決辦法...2007-09-09
javascript或asp實(shí)現(xiàn)的判斷身份證號(hào)碼是否正確兩種驗(yàn)證方法
在網(wǎng)頁(yè)中經(jīng)常需要輸入正確的身份證號(hào)碼,只能通過(guò)程序來(lái)驗(yàn)證身份證格式。根據(jù)身份證號(hào)碼生成的原理,就是驗(yàn)證后面幾位就可以了。2009-11-11
淺談JavaScript 函數(shù)參數(shù)傳遞到底是值傳遞還是引用傳遞
下面小編就為大家?guī)?lái)一篇淺談JavaScript 函數(shù)參數(shù)傳遞到底是值傳遞還是引用傳遞。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
JSON+HTML實(shí)現(xiàn)國(guó)家省市聯(lián)動(dòng)選擇效果
實(shí)現(xiàn)國(guó)家省市聯(lián)動(dòng)的方法有很多,本文要為大家介紹的JSON+HTML如何實(shí)現(xiàn),需要的朋友可以參考下2014-05-05
JavaScript 動(dòng)態(tài)將數(shù)字金額轉(zhuǎn)化為中文大寫金額
JavaScript 將數(shù)字金額轉(zhuǎn)化為中文大寫金額的函數(shù)2009-05-05

