html : css
<el-upload :headers="header" // 請求頭參數(通常包含token,認證參數authorization) :data="uploadData" // 額外的其餘參數,自行配置如:{‘A’ :'B'} accept="image/jpeg,image/jpg,image/png" // 限制圖片格式 :action="uploadCoverUrl" // 圖片上傳服務器地址 list-type="picture-card" name="file" :file-list="fileList" // 圖片被添加的集合數組 :class="{hideUpload: hide}" // 超過如今次數或者張數,隱藏+,頁面不讓繼續添加圖片,默認false :limit="1" // 限制次數
:before-upload = 'beforeAvatarUpload' //上傳前回調 :on-success="handleAvatarSuccess" // 成功回調 :on-preview="handlePictureCardPreview" // 預覽回調 :on-remove="handleRemove"> // 刪除回調 <i class="el-icon-plus"></i> // 設計添加背景圖標 </el-upload>
<el-dialog :visible.sync="dialogVisible"> // 主要用做預覽大圖
<img width="100%" :src="dialogImageUrl" >
</el-dialog>
<div class="tips"> // 上傳以前限制格式提示 beforeAvatarUpload
<p>1.建議尺寸(360*240)</p>
<p>2.格式爲jpg或png</p>
<p>3.且不能大於2M</p>
</div>
看一下官方的 name解釋:html
1. 與後臺Swgg 的對應:(坑一)api
它的錯誤也看下: MissingServletRequestPartException: Required request part 'file' is not present數組
2. 咱們在來看下他的請求頭錯誤,參數少穿或者傳錯的狀況:(坑二)服務器
它的錯誤也看下:Error in v-on handler: "TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': Value is not a valid ByteString."ide
found in (請求參數不是有效的值)ui
3. url 錯誤的拼接:(坑三)this
查看錯誤: 單獨baseUrl.js 沒有export 出去,或者單獨引入時沒有加{}url
import { base } from '../../api/baseUrl.js'
4. 圖片沒有回顯? (坑四)spa
// 上傳成功的鉤子 handleAvatarSuccess(res, file, fileList) { // res 成功返回值,file 傳的值包含res 和fileList console.log(res) let that = this; that.fileList.push({ name: res.data.name, url: res.data.path // 沒有回顯的緣由是沒有後臺沒有正確返回path完整的路徑。 }) if(fileList.length === 1){ that.hide = true; // 隱藏添加按鈕 } },
5. 預覽功能沒有圖片?或者最上層有遮罩層?(坑五)
// 預覽大圖 handlePictureCardPreview(file,fileList) { console.log(file) console.log(fileList) this.dialogImageUrl = file.url; (不是後臺返回的path路徑) this.dialogVisible = true; },
有遮罩層的問題暫未解決,若是有知道的,請告知一下,謝謝。
6. 刪除功能:(這個不會有什麼錯誤,把fileList 從新賦值一下就能夠了。)
// 刪除一張封面的方法 handleRemove(file, fileList) { console.log(file, fileList); this.hide = false; this.fileList = fileList },
7. 限制圖片大小:(這個也應該不會有什麼問題)
beforeAvatarUpload(file) { console.log(file) // const isJPG = file.type === 'image/jpeg'; const isLt2M = file.size / 1024 / 1024 < 2; // 須要注意的 // if (!isJPG) { // this.$message.error('上傳圖片只能是 JPG 格式!'); // } if (!isLt2M) { this.$message.error('上傳圖片大小不能超過 2MB!'); } return isLt2M; },
css:
/*上傳圖片的*/ .hideUpload .el-upload--picture-card { display: none; } .avatar-uploader .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; }
至此因此可能遇到的問題都總結下來了,不再用怕上傳圖片了。有些朋友會問;原生上傳圖片會不會很難,個人回答是不難,樣式沒有eleUi好看,並且沒有作預覽功能,但能夠解決那個遮罩層的問題,詳情請翻看我以前的博客。