在vue后台管理系统里面,有时候会遇到一个图片上传的功能,做这个功能的时候的思路是这样的:
1:首选由前端写一个图片上传的upload标签,选择本地的图片文件之后
2:调用后端给的接口,以二进制文件的形式传给后端服务器
3:服务器进行处理,处理完成之后将服务器的主机名加到图片名称的前缀上
4:返回一个有服务器主机+图片名称的在线就可以访问的链接给到前端
5:前端直接将在线链接路径渲染在界面显示图片。

前端:

<template>
<el-upload
  class="upload-demo"
  action="/index.php/api/goods/upload"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :file-list="fileList"
  list-type="picture"
  :on-success="handleAvatarSuccess"

>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>

<script>

export default {
  name: 'goodsAdd',
  data() {
    return {
      fileList: '',
    };
  },
  methods: {
    //图片上传成功回调函数
    handleAvatarSuccess(res) {
      console.log(res.data);
      this.ruleForm.image = res.data;
    },
    handleRemove(file, fileList) {
      console.log(file, fileList);
    },
    handlePreview(file) {
      console.log(file);
    }

  }
}
</script>

后端遇到的问题

 

解决:

 利用 composer 下载依赖包

composer require itbdw/laravel-storage-qiniu

打开 config 文件夹下的 app.php 文件,在 providers 中加入一下代码

itbdw\QiniuStorage\QiniuFilesystemServiceProvider::class,

打开 config 文件夹下的 filesystems.php 文件,在 disks 中加入一下代码

'qiniu' => [  
            'driver'    => 'qiniu',  
            'domain'    => '',  //你的七牛域名  
            'access_key'=> '',    //AccessKey  
            'secret_key'=> '',   //SecretKey  
            'bucket'    => '',    //Bucket名字,即七牛云存储空间名称  
        ],

在控制器里面进行上传

$file = $request->file();

        $file = $file['file'];

        $disk = \Storage::disk('qiniu');
        $time = date("Y-m-d");

        $fileName = $disk->put($time, $file);

        if (!$fileName) {
            echo '上传失败';
        }

        $img_url = $disk->getDriver()->downloadUrl($fileName);

        //返回连接地址
        return success('上传成功', $img_url);

GitHub 加速计划 / vu / vue-element-admin
23
9
下载
PanJiaChen/vue-element-admin: 是一个基于 Vue.js 和 Element UI 的后台管理系统模板,支持多种数据源和插件扩展。该项目提供了一个完整的后台管理系统模板,可以方便地实现后台管理系统的快速搭建和定制,同时支持多种数据源和插件扩展。
最近提交(Master分支:2 个月前 )
0caa975e - 3 年前
cd3f7267 - 3 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐