前台nuxt+后台eggjs实现el-upload上传并且vue-cropper剪裁输出到阿里云oss

该博客详细介绍了如何在Nuxt.js前端使用vue-cropper组件进行图片剪裁,并结合el-upload组件上传图片。接着,通过EggJS服务端接收数据并推送到阿里云OSS。博客内容包括vue-cropper属性、el-upload与cropper的联合使用、服务端数据处理和阿里云OSS配置等。
摘要由CSDN通过智能技术生成

nuxt使用vue-cropper

  1. 下载vue-cropper;
npm install vue-cropper
  1. nuxt.config.js配置载入vue-cropper全局组件
module.exports = {
   
  plugins: [
    '@/plugins/element-ui',
    {
   
      src: '@/plugins/axios',
      ssr: true
    },
    '~/plugins/router.js',
    {
    src: '~/plugins/cropper.js', ssr: false }
  ],
}
  1. 实现plugins/cropper.js,剪裁组件是纯前端的操作,所以不需要ssr,也没有必要加载到服务端渲染
import Vue from 'vue';
import vueCropper from 'vue-cropper';
if(process.browser){
   
    Vue.use(vueCropper);
}

vue-cropper属性介绍

  1. vue-cropper剪裁组件的属性介绍;

    属性名称 描述 可选值
    img 裁剪图片的地址 url地址,支持blob和base64
    output-size 裁剪生成图片的质量 默认值1.可选值0~1之间
    output-type 裁剪生成图片的格式 默认jpeg jpeg, png, webp
    info 裁剪框的大小信息 默认是true,可选true和false
    canScale 图片是否允许滚轮缩放 默认是true,可选true和false
    can-move 上传图片是否可以移动 默认是true,可选true和false
    can-move-box 截图框能否拖动 默认是true,可选true和false
    fixed-box 固定截图框大小 不允许改变
    auto-crop 是否默认生成截图框 默认是false,可选true和false
    auto-crop-width 默认生成截图框宽度 默认是容器的 80%
    auto-crop-height 默认生成截图框高度 默认容器的 80%
    center-box 截图框是否被限制在图片里面 默认是false,可选true和false
    high 是否按照设备的dpr 输出等比例图片 默认是true,可选true和false
    info-true true 为展示真实输出图片宽高 false 展示看到的截图框宽高 默认是false,可选true和false
    enlarge 图片根据截图框输出比例倍数 默认是1,可选0~max
    fixed 是否开启截图框宽高固定比例 默认是false,可选true和false
    fixed-number 截图框的宽高比例 默认[1,1],可选宽度和高度

    实现cropper剪裁组件的封装

    1. 剪裁组件的封装;
    
    
 
   

el-upload组件和cropper组件的联合使用

  1. el-upload组件和cropper组件;
<template>
  <div>
    <!-- 注意:必须关闭自动上传属性 auto-upload -->
    <el-upload
      :http-request="Upload"
      name="files"
      :multiple="false"
      list-type="picture-card"
      :limit="12"
      :before-upload="beforeAvatarUpload"
      ref="fileUpload"
      :auto-upload="false"
      :on-change="selectChange"
      action="aaa"
      class="cropper-upload-box"
    >
      <i slot="default" class="el-icon-plus"></i>
    </el-upload>
 
    <cropper
      v-if="showCropper"
      :dialog-visible
是的,nuxt + vue-i18n 在多语言切换时会改变路由,这是它的核心机制所决定的。nuxt + vue-i18n 通过在路由路径中添加语言前缀来实现多语言切换的,例如: ``` // 中文版路由 /zh/home // 英文版路由 /en/home ``` 这样做的好处是可以让搜索引擎更好地识别不同语言的页面,从而提高网站的 SEO。 如果您不想在路由中添加语言前缀,也可以通过配置 nuxt.config.js 文件来实现。具体实现方法如下: 1. 设置 routeNameSplitter 在 nuxt.config.js 文件中,设置 routeNameSplitter 选项,例如: ``` export default { ... router: { ... routeNameSplitter: '/' }, ... } ``` 这样做的效果是让 nuxt 不在路由中添加语言前缀,而是使用 / 分隔符来分隔路由和语言信息。 2. 使用别名来设置带有语言信息的页面路径 在 pages 文件夹中,为每个页面创建一个带有语言信息的别名,例如: ``` // pages/home.vue <template> <div> <h1>{{ $t('home.title') }}</h1> </div> </template> <script> export default { ... } // 为中文版路由创建别名 export const cn = { path: '/home', alias: '/zh/home' } // 为英文版路由创建别名 export const en = { path: '/home', alias: '/en/home' } </script> ``` 这样做的效果是让 nuxt 在生成路由时,使用带有语言信息的别名来代替默认的路由路径。 以上是我为您提供的关于 nuxt + vue-i18n 改变了路由的解决方法。如果您有其他问题,可以随时向我提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值