1. 程式人生 > >input file單檔案上傳和FileReader物件的基本使用

input file單檔案上傳和FileReader物件的基本使用

多說無益,擼出的程式碼才是鐵的事實。。。

建議:可以先看程式碼再看步驟也挺不錯。。。

第一步:在上傳框change的時候,獲取自帶的files物件,一般獲取到的為files[0],如下面程式碼

oFlieImg.onchange = function(e){
		var _self = e.currentTarget;
		var oSelfFile = _self.files[0];	//獲取檔案
		console.log(oSelfFile)
}

第二步:例項化FileReader,一般來說在input元素的相關事件(例如onchange)發生的時候,開始例項化一個FileReader,程式碼如下

var oReader = new FileReader();    // 例項化FileReader物件

第三步:使用FileReader.readAsDataURL(file)讀取檔案內容,在FileReader物件被例項化之後讀取獲取到的檔案資訊。程式碼入下

oReader.readAsDataURL(oSelfFile);	// 讀取檔案

第四步:在FileReader物件載入的時候獲取到它自己的result值,這裡說明一下:獲取result值有多種,第一種直接是this.result、第二種是e.currentTarget.result、第三種是e.target.result,其實列印其e的時候你會發現,它所有的物件都在,逐個呼叫即可。這裡因為是基礎應用,所以就不多做介紹了。這裡獲取到的base64,可以直接作為圖片的URL使用,也可以直接在跟後端互動的時候傳給後端。第四步的程式碼入下

oReader.onload = function(ev){
		// 獲取到FileReader讀取檔案的base64
		oImgBase64 = ev.currentTarget.result;
}

第五步:其實上面也講了,就是將獲取到的base64直接作為圖片的URL使用,也可以直接在跟後端互動的時候傳給後端。

最後小狼子把這個簡單的案例的程式碼發給大家,因為沒做封裝,所以程式碼有點小亂,希望見諒

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="小狼子<
[email protected]
>"> <title>單檔案上傳</title> <style type="text/css"> .fileimg-ct{ width: 200px; height: 200px; background-color: #c1cbda; position: relative; border: 1px #c1cbda solid; } .fileimg-ct > img{ border: none; background: none; width: 160px; height: 160px; position: absolute; left: 20px; top: 20px; display: none; z-index: 3; } .fileimg-ct > button{ width: 200px; height: 200px; background: #fff; color: #333; margin: 0; padding: 0; border: none; outline: none; cursor: pointer } .fileimg-ct > span{ font-size: 14px; position: absolute; right: 10px; top: 10px; z-index: 3; cursor: pointer; display: none; } .fileimg-ct > span:hover{ color: red; } .fileimg-ct > input{ width: 200px; height: 200px; position: absolute; left: 0; top: 0; z-index: 2; opacity: 0; } </style> </head> <body> <div class="fileimg-ct"> <button>請上傳圖片</button> <span id="clearImg">x</span> <input type="file" name="file" id="fileImg" accept=".gif,.jpg,.jpeg,.png"> <img src="img/m_01.jpeg" id="showImg" width="200" height="200"> </div> <script type="text/javascript"> var oFlieImg = document.querySelector('#fileImg'); var oShowImg = document.querySelector('#showImg'); var oClearImg = document.querySelector('#clearImg'); var oImgBase64 = ''; imgIsEmpty(); oFlieImg.onchange = function(e){ var _self = e.currentTarget; var oSelfFile = _self.files[0]; //獲取檔案 console.log(oSelfFile) // console.log(oSelfFile.name.lastIndexOf('.')); // 如果要限制檔案型別的話這裡可以判定oSelfFile.name‘.’最後一次出現的位置之後的單詞是否為想要的型別 // 或者判斷oSelfFile.type // 判斷檔案大小為size單位為位元組 var oReader = new FileReader(); oReader.readAsDataURL(oSelfFile); // 讀取檔案 // 載入檔案 oReader.onload = function(ev){ // 獲取到FileReader讀取檔案的base64 oImgBase64 = ev.currentTarget.result; // console.log(oImgBase64) if (oShowImg) { oShowImg.setAttribute('src', oImgBase64); imgIsEmpty(); } } } oClearImg.onclick = function(){ oShowImg.setAttribute('src', ''); imgIsEmpty(); } function imgIsEmpty(){ var oShowSrc = oShowImg.getAttribute('src'); if (oShowSrc==='') { oClearImg.style.display = 'none'; oShowImg.style.display = 'none'; }else { oShowImg.style.display = 'block'; oClearImg.style.display = 'block'; } } // 沒有做封裝見諒 </script> </body> </html>

好吧,我承認幾乎沒人會看到這裡,但是還是bb一句,如果想要更多的檔案上傳的操作可以在下方留言哦。。。

相關推薦

input file檔案FileReader物件基本使用

多說無益,擼出的程式碼才是鐵的事實。。。 建議:可以先看程式碼再看步驟也挺不錯。。。 第一步:在上傳框change的時候,獲取自帶的files物件,一般獲取到的為files[0],如下面程式碼 oFlieImg.onchange = function(e){ var

input file 實現拍照選擇相簿等檔案

直接寫 <input type="file" accept="image/png,image/jpg"> 這樣的格式只能通過檔案管理器選擇圖片 當需要實現手機拍照上傳的時候,需要多加一個屬

ThinkPHP遇到的問題:檔案檔案

if($_FILES['pic']['tmp_name']){     $upload = new \Think\Upload();// 例項化上傳類     $upload->maxSize

input file選擇檔案後清空選擇框檔案資訊兩種解決方案

上傳檔案時,選擇了檔案後想清空檔案路徑。用兩種方法解決  <input type="file" id="fileupload" name="file" /> 第一種: var obj =

SSH註解實現檔案下載

配置檔案省略 1.上傳頁面 <form action="upload.html" enctype="multipart/form-data" method="post"> 上傳檔案:<input type="file" name

ajaxfileupload檔案相容IE8及 input type=file樣式修改

ajaxfileupload單檔案上傳相容IE81、引用jquery和ajaxfileupload.js<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></scrip

input file 文件,js控制文件的大小格式

chan method filesyste com scripting span size gif post 文件上傳一般是用jquery的uploadify,比較好用。後面會出文章介紹uploadify這個插件。但是,有時候為了偷懶,直接就用input 的file進行文件

Struts2的檔案下載(1)檔案

在struts2中整合fileuoload功能,因為在匯入的jar包中包含了common-fileipload.jar檔案 在struts2中的interceptor 中有一個fileupload攔截器,他的主要功能就是完成檔案上傳。 注意事項 method=post

input file多圖限制大小張數

    public Map<String, Object> upload(@RequestParam(value="file",required=false)MultipartFile[] file,        HttpServletRequest requ

檔案下載

檔案上傳和下載的實質:檔案拷貝 檔案上傳:從本地拷貝到伺服器磁碟上   客戶端需要編寫檔案上傳表單---->服務端需要編寫程式碼接受上傳的檔案 檔案下載:從伺服器磁碟上拷貝到本地磁碟   需要編寫服務端的程式碼,客戶端的下載的工作瀏覽器核心解決的

input File實現同時多個檔案

預設的呼叫方式: <input type="file" name="filename"/> 可實現上傳單個檔案,但無法多選確認。 html在input[type='file']中給我們提

IOS學習 網路 AFNetworking檔案 取消單個佇列全部佇列的方法(取消網路請求)

 專案中有時會有這種情況,當介面正在請求資料,但資料為返回之前。返回到上一個介面,這種情況下,應取消此介面的網路請求。此篇就是為了處理此種情況下的操作,可        以取消單個請求佇列,如果介面介面很多,可以一次性取消所有請求佇列。 AFHTTPSessionManager *manager =

input file 重復同一張圖片失效的解決辦法

strong bug text 更換 失效 重復 .... inpu mage 項目中遇到上傳圖片,需要本地預覽效果,測試時無意間發現,當選擇A圖片,然後更換為B圖片,完全正常;當選擇A圖片,取消該圖片,再測選擇A圖片後,發現不會再生成預覽效果,出現了bug; 查找相關資料

javaExcel檔案下載

上傳在頁面必須加上下面屬性 <form method="post" enctype="multipart/form-data" target="frameFile" action="${vehiclePath }/bindVehicle?${_csrf.parameterName}=$

SpringBoot多檔案檔案下載

1、前端的form表單: <form id="form"  action="controller層的多檔案上傳方法訪問路徑" method="post" enctype="multipart/form-data"> <input  type="file" n

xshell 檔案下載

xshell 檔案上傳和下載 介紹兩種方式:命令、工具 上傳和下載參照物件是本機 命令: 1.sz  檔案下載(檔案大小限制 4G) 2.rz 檔案上傳 工具: File Transfer(工具欄中有) 這個沒有上

SpringMVC檔案下載

1. 檔案上傳 SpringMVC通過MultipartResolver來實現檔案上傳,預設沒有裝配,使用MultipartResolver需要加上commons-fileupload這個jar包。 1.1 配置MultipartResolver <!--配置上傳檔案控制元

檔案

1.新增依賴 <!-- 檔案上傳 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload

**#使用springboot進行檔案下載**

使用springboot進行檔案上傳和下載 ##檔案下載功能的實現思路: 1.獲取要下載的檔案的絕對路徑 2.獲取要下載的檔名 3.設定content-disposition響應頭控制瀏覽器以下載的形式開啟檔案 4.獲取要下載的檔案輸入流 5.建立資料緩衝區//緩衝區解釋