js實現(xiàn)文件上傳功能 后臺使用MultipartFile
更新時間:2018年09月08日 14:27:06 作者:liuyazhuang
這篇文章主要為大家詳細(xì)介紹了純js實現(xiàn)最簡單的文件上傳功能,后臺使用MultipartFile,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文為大家分享了js實現(xiàn)文件上傳功能的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XMLHttpRequest上傳文件</title>
<script type="text/javascript">
//圖片上傳
var xhr;
//上傳文件方法
function UpladFile() {
var fileObj = document.getElementById("file").files[0]; // js 獲取文件對象
var url = "http://localhost:8080" + "/api/attachment/upload"; // 接收上傳文件的后臺地址
var form = new FormData(); // FormData 對象
form.append("file", fileObj); // 文件對象
xhr = new XMLHttpRequest(); // XMLHttpRequest 對象
xhr.open("post", url, true); //post方式,url為服務(wù)器請求地址,true 該參數(shù)規(guī)定請求是否異步處理。
xhr.onload = uploadComplete; //請求完成
xhr.onerror = uploadFailed; //請求失敗
xhr.upload.onprogress = progressFunction;//【上傳進度調(diào)用方法實現(xiàn)】
xhr.upload.onloadstart = function(){//上傳開始執(zhí)行方法
ot = new Date().getTime(); //設(shè)置上傳開始時間
oloaded = 0;//設(shè)置上傳開始時,以上傳的文件大小為0
};
xhr.send(form); //開始上傳,發(fā)送form數(shù)據(jù)
}
//上傳成功響應(yīng)
function uploadComplete(evt) {
//服務(wù)斷接收完文件返回的結(jié)果
var data = JSON.parse(evt.target.responseText);
if(data.success) {
alert("上傳成功!");
}else{
alert("上傳失??!");
}
}
//上傳失敗
function uploadFailed(evt) {
alert("上傳失敗!");
}
//取消上傳
function cancleUploadFile(){
xhr.abort();
}
//上傳進度實現(xiàn)方法,上傳過程中會頻繁調(diào)用該方法
function progressFunction(evt) {
var progressBar = document.getElementById("progressBar");
var percentageDiv = document.getElementById("percentage");
// event.total是需要傳輸?shù)目傋止?jié),event.loaded是已經(jīng)傳輸?shù)淖止?jié)。如果event.lengthComputable不為真,則event.total等于0
if (evt.lengthComputable) {//
progressBar.max = evt.total;
progressBar.value = evt.loaded;
percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
}
var time = document.getElementById("time");
var nt = new Date().getTime();//獲取當(dāng)前時間
var pertime = (nt-ot)/1000; //計算出上次調(diào)用該方法時到現(xiàn)在的時間差,單位為s
ot = new Date().getTime(); //重新賦值時間,用于下次計算
var perload = evt.loaded - oloaded; //計算該分段上傳的文件大小,單位b
oloaded = evt.loaded;//重新賦值已上傳文件大小,用以下次計算
//上傳速度計算
var speed = perload/pertime;//單位b/s
var bspeed = speed;
var units = 'b/s';//單位名稱
if(speed/1024>1){
speed = speed/1024;
units = 'k/s';
}
if(speed/1024>1){
speed = speed/1024;
units = 'M/s';
}
speed = speed.toFixed(1);
//剩余時間
var resttime = ((evt.total-evt.loaded)/bspeed).toFixed(1);
time.innerHTML = ',速度:'+speed+units+',剩余時間:'+resttime+'s';
if(bspeed==0) time.innerHTML = '上傳已取消';
}
</script>
</head>
<body>
<progress id="progressBar" value="0" max="100" style="width: 300px;"></progress>
<span id="percentage"></span><span id="time"></span>
<br /><br />
<input type="file" id="file" name="myfile" />
<input type="button" onclick="UpladFile()" value="上傳" />
<input type="button" onclick="cancleUploadFile()" value="取消" />
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- 原生JS實現(xiàn)前端本地文件上傳
- JS實現(xiàn)可視化文件上傳
- JS+Struts2多文件上傳實例詳解
- vue.js 圖片上傳并預(yù)覽及圖片更換功能的實現(xiàn)代碼
- php+croppic.js實現(xiàn)剪切上傳圖片功能
- JavaScript使用享元模式實現(xiàn)文件上傳優(yōu)化操作示例
- JS實現(xiàn)圖片上傳多次上傳同一張不生效的處理方法
- js實現(xiàn)圖片上傳并預(yù)覽功能
- vue.js圖片轉(zhuǎn)Base64上傳圖片并預(yù)覽的實現(xiàn)方法
- Angularjs實現(xiàn)多圖片上傳預(yù)覽功能
- JavaScript實現(xiàn)異步圖像上傳功能
- SpringBoot+Vue.js實現(xiàn)前后端分離的文件上傳功能
- node.js自動上傳ftp的腳本分享
- JS實現(xiàn)的文件拖拽上傳功能示例
- Vue2.0實現(xiàn)調(diào)用攝像頭進行拍照功能 exif.js實現(xiàn)圖片上傳功能
- JS和Canvas實現(xiàn)圖片的預(yù)覽壓縮和上傳功能
- JavaScript代碼實現(xiàn)txt文件的上傳預(yù)覽功能
- js 實現(xiàn) input type="file" 文件上傳示例代碼
- js實現(xiàn)上傳圖片預(yù)覽的方法
- Servlet+Jsp實現(xiàn)圖片或文件的上傳功能具體思路及代碼
- 上傳圖片預(yù)覽JS腳本 Input file圖片預(yù)覽的實現(xiàn)示例
- JS實現(xiàn)上傳圖片的三種方法并實現(xiàn)預(yù)覽圖片功能
- js實現(xiàn)圖片上傳并正常顯示
- 一個簡單的jQuery插件ajaxfileupload.js實現(xiàn)ajax上傳文件例子
- JS中使用FormData上傳文件、圖片的方法
- 客戶端js判斷文件類型和文件大小即限制上傳大小
- js獲取上傳文件的絕對路徑實現(xiàn)方法
- 原生JS和jQuery版實現(xiàn)文件上傳功能
- 微信JSSDK上傳圖片
- 簡單實現(xiàn)js上傳文件功能
- JS文件上傳神器bootstrap fileinput詳解
- js實現(xiàn)上傳圖片之上傳前預(yù)覽圖片
- Javascript圖片上傳前的本地預(yù)覽實例
- 學(xué)習(xí)使用AngularJS文件上傳控件
- JS簡單實現(xiàn)文件上傳實例代碼(無需插件)
- 分享5個好用的javascript文件上傳插件
相關(guān)文章
Js 導(dǎo)出table內(nèi)容到Excel的簡單實例
在做前端開發(fā)時,常常會用到通過js把數(shù)據(jù)導(dǎo)入到excel的功能,現(xiàn)在給出給簡單demo代碼,以供以后使用2013-11-11
webpack使用Symbol.toStringTag(Symbol.toStringTag用法)
Symbol.toStringTag是一個內(nèi)置 symbol,它通常作為對象的屬性鍵使用,對應(yīng)的屬性值應(yīng)該為字符串類型,這個字符串用來表示該對象的自定義類型標(biāo)簽,這篇文章主要介紹了webpack使用Symbol.toStringTag(Symbol.toStringTag用法),需要的朋友可以參考下2024-02-02
Highcharts 非常實用的Javascript統(tǒng)計圖demo示例
官網(wǎng)實例中給出了各式各樣的demo,可以參照document修改自己需要的即可,本文實現(xiàn)的是一個學(xué)生成績走勢demo,有需求的朋友可以參考下哈,希望對大家有所幫助2013-07-07
利用location.hash實現(xiàn)跨域iframe自適應(yīng)
其他一些類似js跨域操作問題也可以按這個思路去解決,需要的朋友可以測試下。2010-05-05
js 根據(jù)對象數(shù)組中的屬性進行排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了js 根據(jù)對象數(shù)組中的屬性進行排序?qū)崿F(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09

