elementuiplus的上传组件,封装图片回显2022/6/6am

<template>
  <div class="upload">
    <!-- <h1>upLoad页面开发中</h1> -->
    <div style="min-width:320px" class="left">
      <div class="title">
        Drag 'n' drop or upload your file here
      </div>
      <div style="margin:8px 0" class="info">( .png Or .jpg Or .jpeg )</div>
      <div class="info">Or</div>
      <el-upload
         ref="upload"
         class="upload-demo"
         action="#"
         :limit="1"
         :on-exceed="handleExceed"
         :auto-upload="false"
         :file-list="fileList"
         :show-file-list="false"
      >
        <template #trigger>
          <el-button class="btn" size="large" color="#6a49ac" >Upload</el-button>
        </template>
       </el-upload>
      <div style="margin-top:8px" class="info">Minimum size: 300px. Recommended to be squared</div>
    </div>
    <div class="mid">

    </div>
    <div class="r" v-if="logoingurl">
      <div class="r-left">
        <div style="font-size:18px;color:#1f252e">Uploaded Image:</div>
        <div>
          <img style="width:100px;height:100px;" :src="logoingurl" alt="">
        </div>
        <el-button class="btn" color="#d54e30" type="danger" icon="Delete" @click="handleRemove" >Delete</el-button>
      </div>

    </div>

  </div>
</template>

<script lang="ts">
import { defineComponent, onMounted, toRefs, reactive, computed, ref } from 'vue'
import { useStore } from 'vuex'
import { useRouter } from 'vue-router'
import { genFileId } from 'element-plus'
import type { UploadInstance, UploadProps, UploadRawFile, UploadFile, UploadUserFile } from 'element-plus'
export default defineComponent({
  name: 'upLoad',
  // props: {

  //   logoingurl: String

  // },
  setup (props, ctx) {
    onMounted(() => {
      // console.log('result', result)

    })
    const Router = useRouter()
    const Store = useStore()
    const upload = ref<UploadInstance>()
    const fileList = ref<UploadUserFile[]>([
      {
        name: Store.state.Microstore.logourl.split('?')[0].split('/')[Store.state.Microstore.logourl.split('?')[0].split('/').length - 1],
        url: Store.state.Microstore.logourl
      }

    ])
    const handleExceed: UploadProps['onExceed'] = (files) => {
      console.log('1')
      upload.value!.clearFiles()
      const file = files[0] as UploadRawFile
      console.log(Store.state.Microstore.logourl.split('?')[0].split('/'))

      Store.commit('baibiaochangeLogourl', URL.createObjectURL(file))
      file.uid = genFileId()
      upload.value!.handleStart(file)
    }

    const handleRemove = (file: UploadFile) => {
      console.log(file)
      Store.commit('baibiaochangeLogourl', '')
    }

    const data = reactive({

      logoingurl: computed(() => {
        return Store.state.Microstore.logourl
      })

    })

    return {
      ...toRefs(data), handleRemove, handleExceed, upload, fileList

    }
  }

})
</script>
<style lang="less" scoped>
.upload {
  display: flex;
  justify-content: space-between;
  // align-items: center;
  .left {
    width: 50%;
    padding-top: 30px ;
    padding-bottom: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    background: #f2f4f6;
    // 虚线边框回头有时间的时候设置
    // border: 1px solid #e7eaef;
    .title {
      font-size: 18px;
      color: #080c16;
      font-weight: 600;
    }
    .info {
      font-size: 14px;
      color: #98a3b3;
    }
    .btn {
      width: 90px;
      height: 40px;
      margin-top: 4px;
      font-size: 18px;
    }

  }
  .mid {
    min-width: 80px;

  }
  .r {
    flex: 1;
    display:flex;
    .r-left {
      display:flex;
      flex-flow: column; //垂直排列
      justify-content: space-between;//两端对齐
      .btn {
        width: 107px;
        height: 40px;
        font-size: 18px;
      }
    }

  }
}
// 重置radio标签样式
::v-deep(.el-radio__input.is-checked .el-radio__inner) {
  border-color: #6a49ac;
  background:#6a49ac;
}
::v-deep(.el-radio__input.is-checked+.el-radio__label) {
  color: #4a5463;
}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Laravel中上图片回显,你可以按照以下步骤进行操作: 1. 在表单中添加文件上字段: ```html <form method="POST" action="/upload" enctype="multipart/form-data"> @csrf <input type="file" name="image"> <button type="submit">上图片</button> </form> ``` 2. 在路由中定义上图片的处理逻辑: ```php use Illuminate\Http\Request; Route::post('/upload', function (Request $request) { if ($request->hasFile('image')) { $path = $request->file('image')->store('public/images'); // 存储的路径为 "storage/images/filename" // 如果你想要访问图片,可以将路径存储到数据库,并使用 Storage::url() 获取完整路径 // 也可以直接拼接 URL,例如:$url = '/storage/images/' . $request->file('image')->hashName(); return redirect()->back()->with('success', '图片成功'); } return redirect()->back()->with('error', '请选择要上图片'); }); ``` 3. 在视图中回显图片: ```html @if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif @if(session('error')) <div class="alert alert-danger">{{ session('error') }}</div> @endif @if(isset($url)) <img src="{{ $url }}" alt="Uploaded Image"> @endif ``` 上述代码中,`$url` 是存储图片路径的变量,可以在控制器中把它递给视图。使用`$url`作为图片的`src`属性值,图片就会回显在页面上。 请确保在进行文件上时,已经配置好了Laravel的文件存储系统,并且有合适的权限以保存和访问上图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值