原生JS實(shí)現(xiàn)文件上傳
本文實(shí)例為大家分享了JS實(shí)現(xiàn)文件上傳的具體代碼,供大家參考,具體內(nèi)容如下
一、目的:
實(shí)現(xiàn)上傳圖片功能
二、效果:

三、思路:
用input標(biāo)簽自帶的上傳,先隱藏掉,給上傳按鈕添加點(diǎn)擊事件,綁定input的點(diǎn)擊事件
四、代碼:
//html <input ref="img-upload-input" class="img-upload-input" type="file" accept=".png, .jpg" @change="submitUpload"> <el-button style="margin-top: 20px" type="primary" @click="handleSelectedImg">選擇圖片</el-button>
//js
//點(diǎn)擊上傳按鈕
handleSelectedImg() {
?this.$refs['img-upload-input'].click()
},
?//選好圖片之后點(diǎn)擊打開(kāi)按鈕
submitUpload(e) {
? const files = e.target.files
? const rawFile = files[0] // only use files[0]
? if (!rawFile) return
? this.upload(rawFile)
},
?//上傳
upload(rawFile) {
? ?this.$refs['img-upload-input'].value = null // fix can't select the same excel
? ?if (!this.beforeUpload) {
? ? ?return
? ?}
? ?//檢查文件是否滿足條件
? ?const before = this.beforeUpload(rawFile)
? ?if (before) {
? ?//上傳事件
? ? ?this.uploadSectionFile(this.uploadParams, rawFile)
? ?}
},
beforeUpload(file) {
? ?const isLt1M = file.size / 1024 / 1024 < 50
? ?if (isLt1M) {
? ? ?return true
? ?}
? ?console.log('上傳文件不超過(guò)50M', 'warning')
? ?return false
},
uploadSectionFile(params, file) {
? ?let data = params
? ?let fd = new FormData()// FormData 對(duì)象
? ?let fileObj = file// 相當(dāng)于input里取得的files
? ?fd.append('stationID', data.stationID)
? ?fd.append('date', data.date)
? ?fd.append('file', fileObj)// 文件對(duì)象
? ?supplementFile(fd).then(res => {
? ? ?//調(diào)用上傳接口
? ?})
}五、注意事項(xiàng)
封裝的請(qǐng)求頭是(后面發(fā)現(xiàn)也不一定要配置這個(gè))
'Content-Type': 'multipart/form-data;'
axios request的攔截轉(zhuǎn)換直接return
transformRequest: [function(data) {
? ? // 對(duì) data 進(jìn)行任意轉(zhuǎn)換處理
? ? return data
? }],六、常見(jiàn)問(wèn)題
1.上傳文件的同時(shí)要傳別的參數(shù)怎么辦?
可以把參數(shù)和文件裝在一個(gè)文件對(duì)象里面
let fd = new FormData()
fd.append('file', file)//文件
fd.append('param1', param)2.文件大小的限制問(wèn)題
1)、前端上傳文件時(shí)限制可選文件大小
2)、后端Springboot限制
3)、nginx配置限制,當(dāng)前端發(fā)送請(qǐng)求后端接收不到的時(shí)候,可以檢查nginx配置。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
JavaScript實(shí)現(xiàn)在頁(yè)面間傳值的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)在頁(yè)面間傳值的方法,涉及javascript傳值的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
JavaScript獲取當(dāng)前運(yùn)行腳本文件所在目錄的方法
這篇文章主要介紹了JavaScript獲取當(dāng)前運(yùn)行腳本文件所在目錄的方法,涉及JavaScript文件目錄操作的相關(guān)技巧,需要的朋友可以參考下2016-02-02
在js代碼拼接dom對(duì)象到頁(yè)面上去的模板總結(jié)(必看)
下面小編就為大家?guī)?lái)一篇在js代碼拼接dom對(duì)象到頁(yè)面上去的模板總結(jié)(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
JavaScript實(shí)現(xiàn)的雙向跨域插件分享
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的雙向跨域插件分享,本文實(shí)現(xiàn)把整個(gè)跨域過(guò)程抽象出來(lái),封裝成一個(gè)JavaScript插件,需要的朋友可以參考下2015-01-01
echarts中X軸顯示特定個(gè)數(shù)label并修改樣式的方法詳解
最近在使用Echarts圖表遇到些特別的需求,想著給大家整理下,所以下面這篇文章主要給大家介紹了關(guān)于echarts中X軸顯示特定個(gè)數(shù)label并修改樣式的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07

