HTML5的 input:file上傳以及型別控制
以HTML5的檔案上傳API
如下demo程式碼在.html
檔案開啟即可:
<!DOCTYPE html>
<html lang="zh_cn">
<head>
<meta charset="UTF-8">
<title>HTML5檔案上傳FileReader API</title>
</head>
<body>
<!--一個能上傳多媒體檔案的表單-->
<input type="file" id="upload-file" multiple />
<!--顯示圖片的地方-->
<div id="destination"></div>
<script>
document.getElementById('upload-file').addEventListener('change', function() {
var file;
var destination = document.getElementById('destination');
destination.innerHTML = '';//每次清空內容
// 迴圈使用者多選的檔案
for(var x = 0, xlen = this.files.length; x < xlen; x++) {
file = this.files[x];
console.log(file);
if(file.type.indexOf('image') != -1) { // 非常簡單的交驗,判斷檔案是否是圖片
var reader = new FileReader();//檔案預覽物件
reader.readAsDataURL(file);//設定要預覽的檔案
reader.onload = function(e) {//監聽檔案載入完成事件
var img = new Image();//創鍵預覽圖片
img.src = e.target.result; //把預覽圖片的src設定為e.target.result屬性。返回預覽檔案的二進位制記憶體資料
destination.appendChild(img);//在把每張圖片,放到預覽區域
};
}
}
});
</script>
</body>
</html>
一、input:file
屬性
屬性值有以下幾個比較常用:
accept
:表示可以選擇的檔案MIME
型別,多個MIME
型別用英文逗號分開,常用的MIME
型別見下表。
multiple
:是否可以選擇多個檔案,多個檔案時其value
值為第一個檔案的虛擬路徑。
1、accept
只能選擇png和gif圖片
<input id="fileId1" type="file" accept="image/png,image/gif" name="file" />
2、multiple
多選檔案上傳
<input id="fileId2" type="file" multiple="multiple" name="file" />
3、常用MIME
型別
字尾名 MIME名稱
*.3gpp audio/3gpp, video/3gpp
*.ac3 audio/ac3
*.asf allpication/vnd.ms-asf
*.au audio/basic
*.css text/css
*.csv text/csv
*.doc application/msword
*.dot application/msword
*.dtd application/xml-dtd
*.dwg image/vnd.dwg
*.dxf image/vnd.dxf
*.gif image/gif
*.htm text/html
*.html text/html
*.jp2 image/jp2
*.jpe image/jpeg
*.jpeg image/jpeg
*.jpg image/jpeg
*.js text/javascript, application/javascript
*.json application/json
*.mp2 audio/mpeg, video/mpeg
*.mp3 audio/mpeg
*.mp4 audio/mp4, video/mp4
*.mpeg video/mpeg
*.mpg video/mpeg
*.mpp application/vnd.ms-project
*.ogg application/ogg, audio/ogg
*.pdf application/pdf
*.png image/png
*.pot application/vnd.ms-powerpoint
*.pps application/vnd.ms-powerpoint
*.ppt application/vnd.ms-powerpoint
*.rtf application/rtf, text/rtf
*.svf image/vnd.svf
*.tif image/tiff
*.tiff image/tiff
*.txt text/plain
*.wdb application/vnd.ms-works
*.wps application/vnd.ms-works
*.xhtml application/xhtml+xml
*.xlc application/vnd.ms-excel
*.xlm application/vnd.ms-excel
*.xls application/vnd.ms-excel
*.xlt application/vnd.ms-excel
*.xlw application/vnd.ms-excel
*.xml text/xml, application/xml
*.zip aplication/zip
*.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
二、樣式美化
請看部落格:css input[type=file] 樣式美化,input上傳按鈕美化
三、AJAX
上傳檔案
在說到ajax
上傳檔案。ajax
上傳的時候,需要獲得input:file
選擇的檔案(可能為多個檔案),獲取其檔案列表為:
//input標籤的files屬性
document.querySelector("#fileId").files
// 返回的是一個檔案列表陣列
獲得的檔案列表,然後遍歷插入到表單資料當中。即:
// 獲得上傳檔案DOM物件
var oFiles = document.querySelector("#fileId");
// 例項化一個表單資料物件
var formData = new FormData();
// 遍歷圖片檔案列表,插入到表單資料中
for (var i = 0, file; file = oFiles[i]; i++) {
// 檔名稱,檔案物件
formData.append(file.name, file);
}
獲得表單資料之後,就可以用ajax的POST上傳。
// 例項化一個AJAX物件
var xhr = new XMLHttpRequest();
xhr.onload = function() {
alert("上傳成功!");
}
xhr.open("POST", "upload.php", true);
// 傳送表單資料
xhr.send(formData);
上傳到伺服器之後,獲取到檔案列表為:
Array
(
[jpg_jpg] => Array
(
[name] => jpg.jpg
[type] => image/jpeg
[tmp_name] => D:\xampp\tmp\phpA595.tmp
[error] => 0
[size] => 133363
)
[png_png] => Array
(
[name] => png.png
[type] => image/png
[tmp_name] => D:\xampp\tmp\phpA5A6.tmp
[error] => 0
[size] => 1214628
)
)
在服務端迴圈遍歷這個陣列就可以上傳檔案了。
相關文章
- input file圖片上傳
- input file multiple 批量上傳檔案
- <input type="file"> 限制檔案型別型別
- 使用Input type=file 原生上傳使用總結
- input[type=file] 獲取上傳檔案的內容
- 修改input標籤type=file型別按鈕的值型別
- vue3中清空input type="file"上傳檔案Vue
- input type="file"使用
- No input file specified.
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- input的type值型別和描述-HTML型別HTML
- 表示一個檔案的 File 型別型別
- jQuery匹配指定type型別input元素jQuery型別
- js 讀取 input file 的內容JS
- 一文搞懂 $_POST 和 file_get_contents ("PHP://input") 的區別PHP
- HTML input file 檔案域HTML
- HTML input file檔案域HTML
- HTML5拖拽檔案上傳HTML
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞C#Unity型別
- input file相容性問題
- 頁面報錯 No input file specified
- HTML5的新特性——語義化標籤、多媒體標籤(video、audio)、input型別、表單屬性HTMLIDE型別
- jsp頁面判斷檔案上傳型別JS型別
- Kotlin可空型別與非空型別以及`lateinit` 的作用Kotlin型別
- Python 序列型別以及函式引數型別Python型別函式
- 記:痛苦的排錯之” No input file specified.“
- no input file specified 三種解決方法
- angular input 為file on-change 無效Angular
- Laravel file 上傳檔案資訊獲取Laravel
- laravel file上傳檔案資訊獲取Laravel
- 關於 Go 中 Map 型別和 Slice 型別的傳遞Go型別
- Java 的異常以及File類Java
- 檔案上傳漏洞防範-檔案型別檢測型別
- Web 伺服器顯示 no input file specifiedWeb伺服器
- <input type="file"> 選中多個檔案
- 專案遷移 寶塔 No input file specified
- 網站開啟提示:”No input file specifed.“網站