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.建立資料緩衝區//緩衝區解釋