首页 > 其他分享 >vue 针对多端口的情况下文件上传处理方法

vue 针对多端口的情况下文件上传处理方法

时间:2022-08-18 11:44:46浏览次数:62  
标签:文件 vue 端口 fileList api let file 上传

在一个项目中,可能会存在多个端口号,因为不同的业务作为区分,需要多个端口号:

解决方案,

  ·1.在特定的端口号中api 接口中进行加入特定的字符

   2.针对api的形式,使用formData来进行上传

   3.增加针对formdata的数据进行上传方式

 

  实例:

    1.在request.js中添加针对文件上传的方式   

       if(config.url.indexOf("?extra_myself=test")!=-1){             let url = config.baseURL;             url = url.replace('48080/admin-api','48081/bus-api');             config.baseURL = url;        }         console.log(config)       里面的48080/admin-api 和48081/bus-api 就是不同的端口号和接口信息         2.       <template>          <div class="app-container">             <el-form                ref="form"                :model="form"                :rules="rules"                :label-position="labelPosition"                label-width="120px"             >              <el-form-item label="格式" prop="type">                 <el-select                    v-model="form.type"                    size="small"                    filterable                    clearable                    placeholder="请选择"                 >                     <el-option                       v-for="item in format_options"                       :key="item.id"                       :label="item.name"                       :value="item.id"                     >                     </el-option>                 </el-select>             </el-form-item>             <el-form-item label="附件" prop="file">               <el-upload                  ref="uploadFile"                  accept=".xlsx, .xls"                  :limit="1"                  action="null"                  :auto-upload="false"                  :before-upload="beforeUploadFile"                  :on-change="fileChange"                  :on-remove="fileRemove"                  :on-exceed="exceedFile"                  :file-list="fileList"                  drag               >                <i class="el-icon-upload"></i>                <div class="el-upload__text">                   将文件拖到此处,或                   <em>点击上传</em>                </div>                <div class="el-upload__tip" slot="tip"></div>                <div class="el-upload__tip" style="color: red" slot="tip">                   提示:仅允许导入“xls”或“xlsx”格式文件!                </div>             </el-upload>           </el-form-item>           <el-form-item style="text-align: center">            <el-button @click="submitFileForm">上传</el-button>         </el-form-item>       </el-form>     </div> </template>
<script> import { gerExport } from "@/api/shippingWorkOrder/index"; import { getToken } from "@/utils/auth";   //获取token, export default {   data() {     return {       labelPosition: "right", //表单对齐方式       format_options: [         {           id: "1",           name: "托书",         },         {           id: "2",           name: "样单",         },       ],       form: {         type: null,       },       fileList: [],       // 导入参数       upload: {         // 是否显示弹出层(sku导入)         open: false,         // 弹出层标题(sku导入)         title: "",         // 是否禁用上传         isUploading: false,         // 设置上传的请求头部         headers: { Authorization: "Bearer " + getToken() },       },     };   },   computed: {     rules() {       return {         type: [{ required: true, message: "请选择类型", trigger: "change" }],       };     },   },   methods: {     // 文件超出个数限制时的钩子     exceedFile(files, fileList) {       this.$notify.warning({         title: '警告',         message: `只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length} 个`       });     },     //文件移除     fileRemove() {       this.fileList = [];     },     // 文件状态改变时的钩子     fileChange(file, fileList) {       if (fileList.length > 1) {         fileList.splice(0, 1);       }       this.files = file.raw;       this.fileList = fileList;       this.beforeUploadFile(file);     },     // 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传     beforeUploadFile(file) {       let extension = file.name         .substring(file.name.lastIndexOf(".") + 1)         .toLowerCase();       let size = file.size / 1024 / 1024;     },     // 提交上传文件     submitFileForm() {       this.$refs["form"].validate((valid) => {         if (valid) {           if (!this.files) {             this.$message.warning("请先上传文件!");             return;           }           let formData = new FormData();           let keys = Object.keys(this.form);           for (let i = 0; i < keys.length; i++) {             formData.append(keys[i], this.form[keys[i]]);           }           formData.append("file", this.files);           formData.append("extra_myself", "test");           gerExport(formData)             .then((response) => {               this.$message.success("上传成功!");               this.fileList = [];               this.form = {                 type: null,               };               this.upload.open = false;             })             .catch((err) => {               this.$message.error("上传失败!");             });         }       });     },
    }, }; </script> api 接口 // 导入 export function gerExport(data){   return request({    url:'接口地址?extra_myself=test',    method: 'post',    dataType: 'file',    data:data   });
 }  

     

 

标签:文件,vue,端口,fileList,api,let,file,上传
From: https://www.cnblogs.com/rockyjs/p/16598140.html

相关文章

  • vue 片区公司关联
    //片区公司关联constassociationChange=async(areaId,companyId,type)=>{letlist=awaitGetCompanyList({areaId:areaId,......
  • vue 2 坑编译系统
    errorin./src/components/NumberInfo/NumberInfo.vue?vue&type=style&index=0&id=4370c5af&lang=less&scoped=true&SyntaxError:TypeError:Cannotsetproperty'pare......
  • Vue学习笔记4-项目开发规范及插件
    Vue学习笔记4-项目开发规范及插件一、安装插件首先搜索安装ESLint和Prettier这两个插件。这里对开发规范的配置仅配置ESLint,对代码格式的配置仅配置Prettier,用于代......
  • Vue面试题03:Vue生命周期相关
    生命周期相关定义:每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如数据监测,模板编译,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中会运行被称为生命......
  • 认识Vue扩展插件
    众所周知,在Vue开发中,实现一个功能可以有很多种方式可以选择,这依赖于Vue强大的功能(指令、混合、过滤等)Vue插件插件通常用来为Vue添加全局功能。插件的功能范围没......
  • vue中改变数组对象属性名名称
    letnape=[];for(leti=0;i<list.length;i++){letres=JSON.parse(JSON.stringify(list[i])......
  • vue 入门
    idea、webstorm、vsCode,都可以开发吧,脚手架vue-cli项目框架一搭建,就写代码了 --关于vue需要掌握的知识点--- 使用的开发工具是webstorm,它是默认就安装好了vuejs......
  • vue数据双向绑定
    vue数据双向绑定 <divid="app">单向数据绑定:<inputtype="text"v-bind:value="txt"><br><br>双向数据绑定:<inputtype="text"v-model:va......
  • vue学习之------vue-router【命名路由】
    命名路由的概念:就是在定义路由规则时,为当前规则去一个名称,增加name属性。name属性不能重复,必须保证唯一性~ (1)用命名路由实现声明式导航  (2)命名路由实现编程......
  • vue学习之------vue-router【编程式导航】
    通过调用API实现导航的方式,叫编程式导航。通过点击链接实现导航的方式,叫声明式导航。 (1)跳转到指定地址的API:this.$router.push('hash地址')(2)实现导航历史的前进、......