中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue如何實現上傳圖片文件

發布時間:2021-05-14 14:31:31 來源:億速云 閱讀:540 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關vue如何實現上傳圖片文件的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

原始input標簽form表單上傳

<input type="file" @change="onchangemd">

methods: {
 	onchangemd(e){
		console.log(e.target.files)//這個就是選中文件信息
		let formdata = new FormData()
		Array.from(e.target.files).map(item => {
         console.log(item)
         formdata.append("file", item)  //將每一個文件圖片都加進formdata
       })
       axios.post("接口地址", formdata).then(res => { console.log(res) })
	}
 }

當看到二進制提交數據,就成功了(binary)

vue如何實現上傳圖片文件
vue如何實現上傳圖片文件

這種也是成功的(是二進制的展開數據。因為有些瀏覽器不顯示binary)

vue如何實現上傳圖片文件

上圖可以看出 傳統上傳文件是以二進制的格式formdata格式提交

用elementui自帶的el-upload上傳

<el-upload action="" :on-change="handleelchange"  :auto-upload="false" list-type="picture-card">
     <i class="el-icon-plus"></i>
</el-upload>

 handleelchange(file, fileList) {
      console.log(file, fileList)
      let formdata = new FormData()
      fileList.map(item => { //fileList本來就是數組,就不用轉為真數組了
        formdata.append("file", item.raw)  //將每一個文件圖片都加進formdata
      })
       axios.post("接口地址", formdata).then(res => { console.log(res) })
    },

不用設置請求頭等(直接用FormData格式提交就行),當看到formdata數據為二進制就說明提交正常(binary),同樣有些瀏覽器不顯示binary,以------WebKitFormBoundaryXoZpi2juymcNoW0l 開頭的這種也是提交正常的

vue如何實現上傳圖片文件

注意fileList數組中的raw才是真實文件數據,如果直接用item而不是item.raw,那么會報500錯誤,并且formdata中的數據不是二進制而是對象格式

fileList.map(item => {
formdata.append(“file”, item) //錯誤實例。要用item.raw
})

vue如何實現上傳圖片文件 elementui

elementui實現一次性上傳多張圖片

注意: 管用思維,點擊提交然后觸發表單提交事件,然后表單提交事件中發起請求。

結果: 上傳每張圖片都需要發起請求,即會發起多次請求

處理: 在submit階段(即this.$refs.xxx.submit() 這步就發起請求),在提交函數中僅僅只進行圖片獲取

多張圖片上傳最后一個注意點: 多張圖片的這個file不能寫死,formdata.append(“file”, item) ,寫為每張圖片的指定name,不然會覆蓋。

<el-upload ref="elupload" action="" multiple :auto-upload="false" :http-request="handleupload"  list-type="picture-card">
	<i class="el-icon-plus"></i>
</el-upload>
<button @click="uploadelupload">點擊提交</button>

methods:{
	uploadelupload() {
      let formdata = new FormData()
      this.$refs.elupload.submit(); // 這里是執行文件上傳的函數,其實也就是獲取我們要上傳的文件  
      this.fileList.forEach(item => {
        formdata.append("file", item)  //將每一個文件圖片都加進formdata
      })
      formdata.append("score", 4)
      axios.post("接口地址", formdata).then(res => { console.log(res) })
    },
    handleupload(param) {
      this.fileList.push(param.file);// 一般情況下是在這里創建FormData對象,但我們需要上傳多個文件,為避免發送多次請求,因此在這里只進行文件的獲取,param可以拿到文件上傳的所有信息
    },
}

elementui提交圖片以及其他數據

  • 后端讓傳圖片、以及其他數據。

  • 注意圖片文件等:必須使用formdata傳過去

  • 其他數據等:用普通方式傳遞

代碼與上述大體相同、這里就只寫axios請求格式
let formdata = new FormData()
formdata.append("file", item)  //將每一個文件圖片都
axios({
	method: "post",
 	url: "接口地址",
	data: formdata,
 	params: { score: 4, content: "xxxxx", order_detail_id: 24, token: "xxxx" }
}).then(res => { console.log(res) })

vue是什么

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

感謝各位的閱讀!關于“vue如何實現上傳圖片文件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

法库县| 兰坪| 崇左市| 克山县| 连江县| 大埔区| 繁昌县| 昆明市| 永平县| 鲁甸县| 祁阳县| 衡东县| 霍山县| 依兰县| 班玛县| 光山县| 新郑市| 黔西| 双峰县| 无为县| 平凉市| 重庆市| 仙桃市| 日照市| 白河县| 广丰县| 富民县| 达尔| 萍乡市| 封开县| 顺义区| 康平县| 阳新县| 德兴市| 开封县| 鲁甸县| 贵阳市| 肃宁县| 阿拉尔市| 香港| 莒南县|