VUE + Element UI 上傳組件

vue修改配置文件(vue.config.js) 有時候會出現沒有重啓,得手動重啓javascript

module.exports = {
    //baseUrl 從 Vue CLI 3.3 起已棄用,請使用publicPath
    baseUrl: './',
    // outputDir: 在npm run build 或 yarn build 時 ,生成文件的目錄名稱(要和baseUrl的生產環境路徑一致)
    outputDir: "mycli3",
    //用於放置生成的靜態資源 (js、css、img、fonts) 的;(項目打包以後,靜態資源會放在這個文件夾下)
    assetsDir: 'static',
    productionSourceMap: false,
    devServer: {
//啓動本地端口
        port: 3666,
//開啓多個代理
        proxy: {
//url路徑中包含 /admin 會跳轉到target
            '/admin': {
                target: 'http://localhost:8666',
//開啓代理:在本地會建立一個虛擬服務端,而後發送請求的數據,並同時接收請求的數據,這樣服務端和服務端進行數據的交互就不會有跨域問題
                changeOrigin: true,
//將url中/admin 部分替換爲空
                pathRewrite: {
                    '^/admin':''
                }
            }
        }
    }
}

前端代碼,  el-upload action參數必須是String(能夠接受一個函數,返回String),vue.config.js proxy配置了/admin會走代理跳target。url寫錯了,會一直跳轉失敗,有些經常使用的單詞,data,methods,components ,寫錯了會出現調用失敗,全部都檢查了,還沒解決能夠看看這裏css

action實現不了 ,那就重寫action,用http-request,這裏須要注意html

1,上傳須要 建立const fileForm = new FormData(); 對象,再存值前端

2,調用後端接口,須要設置 headers: { "content-type": "multipart/form-data" }vue

<el-form-item label="圖標:">
 <el-upload
 //可接受的文件格式
   accept="image/*"
 //是否展現文件列表
   :show-file-list="false"
   class="avatar-uploader"
 //必填,文件上傳路徑,String,可接受函數,裏面返回url
   action="/admin/util/updload"
 //重寫action,本身實現上傳邏輯,action部分能夠爲空
   :http-request="handleUpload"
 //上傳成功回調
   :on-success="handleUploadSuccess">
  <img v-if="form.image" :src="form.image" class="avatar" />
  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>
</el-form-item>   

<script>
//省略代碼…………
//上傳函數,http-request 能夠接受一個參數
handleUpload(param){
   console.info("開始上傳", param.file)
   const fileForm = new FormData();
   fileForm.append("file", param.file);
   actions.uploadImage(fileForm).then(res =>{
       this.$set(this.form, "image", res.data.data)
   })
},
…………

//封裝的函數部分(這裏是一個獨立的文件)
uploadImage(params) {
    // 根據後臺需求的數據格式肯定headers
    return axios.post('/admin/util/upload', params, {
            headers: { "content-type": "multipart/form-data" }
    })
},
</script>  


<style lang="less" scoped>
//圖片上傳樣式
.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    width: 178px;
  }
.avatar-uploader /deep/ .el-upload {
    width: 178px;
  }
  .avatar-uploader /deep/ .el-upload:hover {
    border-color: #409EFF;
  }
  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
  }
  .avatar {
    width: 178px;
    height: 178px;
    display: block;
  }
</style>

 

vue.config.js 配置文件 詳解  https://www.cnblogs.com/yanl55555/p/11792583.htmljava

相關文章
相關標籤/搜索