美文网首页
上传电子书

上传电子书

作者: jesse28 | 来源:发表于2021-03-10 07:01 被阅读0次

上传的upload组件

<template>
  
  <div class="upload-container">
    <el-upload
      :action="action"
      :headers="headers"
      :multiple="false"
      :limit="1"
      :before-upload="beforeUpload"
      :on-success="onSuccess"
      :on-error="onError"
      :on-remove="onRemove"
      :file-list="fileList"  //这个是文件列表,用在编辑的时候,回显用的,fileList是从父组件传过来的
      :on-exceed="onExceed"  
      :disabled="disabled"  //这个也是从父组件传过来的,如下面的props
      drag
      show-file-list
      accept="application/epub+zip"
      class="image-upload"
    >
      <i class="el-icon-upload" />
      <div v-if="fileList.length === 0" class="el-upload__text">
        请将电子书拖入或 <em>点击上传</em>
      </div>
      <div v-else class="el-upload__text">图书已上传</div>
    </el-upload>
  </div>
</template>

<script>
import { getToken } from '../../utils/auth'  //从cookie获取token

export default {
  props: {
    fileList: {
      type: Array,
      default() {
        return []
      }
    },
    disabled: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      action: `${process.env.VUE_APP_BASE_API}/book/upload`
    }
  },
  computed: {
    headers() {
      return {
        Authorization: `Bearer ${getToken()}`//1.需要定义header,而且登录的时候要带上token,防止没有登录的人上传一些乱的文件
      }
    }
  },
  methods: {
    beforeUpload(file) {
      this.$emit('beforeUpload', file)  //这个方法具体做的是调动父组件传入的一个事件
    },
    onSuccess(response, file) {   //成功时候执行的操作
      console.log(response, file)
      const { code, msg, data } = response
      if (code === 0) {
        this.$message({
          message: msg,
          type: 'success'
        })
        this.$emit('onSuccess', data)
      } else {
        this.$message({
          message: (msg && `上传失败,失败原因:${msg}`) || '上传失败',
          type: 'error'
        })
        this.$emit('onError', file)
      }
    },
    onError(err) {
      const errMsg = err.message && JSON.parse(err.message)
      this.$message({
        message: (errMsg && errMsg.msg && `上传失败,失败原因:${errMsg.msg}`) || '上传失败',
        type: 'error'
      })
      this.$emit('onError', err)
    },
    onRemove() {
      this.$message({
        message: '电子书删除成功',
        type: 'success'
      })
      this.$emit('onRemove')
    },
    onExceed() { //文件超出个数限制时的钩子
      this.$message({
        message: '每次只能上传一本电子书',
        type: 'warning'
      })
    }
  }
}
</script>

<style lang="scss" scoped>
</style>

1.当我们上传成功之后:on-success="onSuccess"执行onSuccess这个方法。

 onSuccess(response, file) {
      console.log(response, file)
      const { code, msg, data } = response
      if (code === 0) {
        this.$message({
          message: msg,
          type: 'success'
        })
        this.$emit('onSuccess', data)
      } else {
        this.$message({
          message: (msg && `上传失败,失败原因:${msg}`) || '上传失败',
          type: 'error'
        })
        this.$emit('onError', file)
      }
    },

如上代码,当上传成功之后,我们给他一个this.message提示成功,然后在发送this.emit('onSuccess',file)给父组件。

2.当我们上传之后显示在列表中,然后我们又点击X删除掉,会触发 :on-remove="onRemove"

   onRemove() {
      this.$message({
        message: '电子书删除成功',
        type: 'success'
      })
      this.$emit('onRemove')
    },

当我们删除之后,会message提示删除成功,然后emit发送事件直接传给父组件,让父组件去处理这个onRemove事件。

3.当我们上传一本电子书之后,然后再去上传一本,会触发onExceed方法。on-exceed 文件超出个数限制时的钩子

 onExceed() { //文件超出个数限制时的钩子
      this.$message({
        message: '每次只能上传一本电子书',
        type: 'warning'
      })
    }

4.上面我们都是写上传组件【子组件】的内容,现在我们要在父组件调用下。


image.png
  <el-col :span="24">
          <ebook-upload
            :file-list="fileList"
            :disabled="isEdit"
            @onSuccess="onUploadSuccess"
            @onRemove="onUploadRemove"
          />
        </el-col>

在我们在父组件中引入刚才我们封装的子组件<ebook-upload>,我们绑定了一个:file-list = "fileList"。这个fileList我们需要在父组件的data里面定义一下,默认是一个空的数组。主要用途是在编辑的时候,上传获取到的电子书放到这个fileList数组当中。

data() {
    return {
      loading: false,
      postForm: {},
      fileList: [],
  },

5.在ebook

相关文章

  • 上传电子书

    上传的upload组件 1.当我们上传成功之后:on-success="onSuccess"执行onSuccess...

  • 反思

    今天做了什么? 1 上传电子书。思考了别的渠道铺电子书,第二 朋友想做游戏,代理手游。我没有给予他建议只是从自从他...

  • 2023.1.9

    今天意外的发现微信读书app还可以上传电子书,不仅支持各类格式的文件,例如epub格式的上传后,阅读体验以及做笔记...

  • 出日头

    最近看到一个说法,好像是在一本电子书中,该电子书在上传115云盘时,因为有违规内容被拒绝存储,书中作者说,文字的后...

  • 几步导入多看,从此告别繁琐

    一、将电子书上传到网盘中 现在大部分的电子书都是在网上通过网盘的形式进行分享的。所以狡兔三窟的你就会有n个网盘。这...

  • 2017.8.15参加青狮营同学会

    过程 镐律教学:把电子书集中在marginnote处理 镐律教学:用简书快速排版上传微信公众号 镐律教学:快速生成...

  • 传播推广:传播方式

    1、文章(电子书)2、视频3、音频4、图片5、直播以上传播方式,最简单有效的就是写文章,成本低,见效快,现在的传播...

  • 书库使用指南

    说明:尚欣阅书库是为了方便大家交流分享电子书,所有内容来自互联网或用户上传,仅供学习交流所用,请在下载后24小时小...

  • 使用小技巧2 - 边听边看

    如果您也像我一样,喜欢听说,那么这个使用小技巧一定能满足您的需要。首先上传音频文件和对应的电子书。打开音频文件后,...

  • 那个打女人的男人,你就是个Low逼

    夜里十一点左右,王先生和桐宝都睡了,我拿着手机在被窝里看电子书,享受完全属于自己的时刻。 突然,楼上传来“乒乒乓乓...

网友评论

      本文标题:上传电子书

      本文链接:https://www.haomeiwen.com/subject/hnalqltx.html