vue+element 上传图片

<template>

    <div>

        <!-- ===============================上传图片=========================== -->

        <el-form-item label="软件LOGO" prop="softwareLogo">

            <el-upload class="avatar-uploader"

                action="#"

                ref="logoUpload"

                list-type="picture-card"

                :file-list="fileList"

                :disabled="uploadDis"

                :auto-upload="true"

                :class="{hide: hideLogoUpload}"

                accept=".jpg,.jpeg,.png,.gif" :http-request="handleUploadFile" :on-change="handleChange"

            >

                <el-icon ><Plus /></el-icon>

                <template #file="{file}">

                    <div>

                    <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />

                    <span class="el-upload-list__item-actions">

                        <span

                        class="el-upload-list__item-preview"

                        @click="handlePictureCardPreview(file)"

                        >

                        <el-icon><zoom-in /></el-icon>

                        </span>

                        <span

                        class="el-upload-list__item-delete"

                        @click="handleRemove(file)"

                        >

                        <el-icon><Delete /></el-icon>

                        </span>

                    </span>

                    </div>

                </template>

            </el-upload>

            <el-dialog v-model="dialogVisible">

                <img w-full :src="dialogImageUrl" alt="" style="width:100%;"/>

            </el-dialog>

        </el-form-item>

    </div>

</template>

<script>

    export default {

        data() {

            return {

            // =========================上传图片==================================+

                fileList: [],

                uploadDis: false,

                hideLogoUpload: false,

                dialogVisible: false, //预览对话框的显示与隐藏

                dialogImageUrl: '',

            }

        },

        methods: {

            // =========================上传图片==================================

            // --------------手动上传----------------------

            handleUploadFile (file) {

                let formData = new FormData();

                formData.append('uid', file.file.uid);

                formData.append('lastModified', file.file.lastModified);

                formData.append('lastModifiedDate', file.file.lastModifiedDate);

                formData.append('name', file.file.name);

                formData.append('fileName', file.file.name);

                formData.append('size', file.file.size);

                formData.append('type', file.file.type);

                formData.append('webkitRelativePath', file.file.webkitRelativePath);

                formData.append('file', file.file);

                // console.log(formData);

                uploadImg(formData).then(res => { // 后端接口

                    customizationForm.value.softwareLogo = res.url

                })

            },

            // ----------------------------添加logo图片-----------------

            handleChange(rawFile, fileList) {

                // console.log(fileList)

                fileList.value = fileList

                // value.customizationForm.softwareLogo = rawFile.url

                if (fileList.length >= 1) {

                    uploadDis.value = true

                    hideLogoUpload.value = true

                }

                const isLt2M = rawFile.size / 1024 / 1024 < 2; // 2M limit. 检查文件大小是否大于2M

                if (!isLt2M) {

                    this.$message.error('上传图片大小不能超过2MB!')

                    return false

                }

                return true

            },

            // ---------------------------logo预览--------------------------------------

            handlePictureCardPreview (file) {

                dialogImageUrl.value = file.url

                dialogVisible.value = true

            },

            // ----------------------------logo移除---------------------------

            handleRemove (file) {

                proxy.$refs.logoUpload.clearFiles()

                customizationForm.value.softwareLogo = ''

                uploadDis.value = false

                hideLogoUpload.value = false

              }

        },

        mounted () {

                                   

        }

    }

</script>

<style lang="scss" scoped>

    .el-icon.avatar-uploader-icon[data-v-00e61323]  {

        width: 100px;

        height: 100px;

        display: flex;

        align-items: center;

        border: 1px dashed #dcdfe6;

    }

    .avatar-uploader .el-upload {

        border: 1px dashed var(--el-border-color);

        border-radius: 6px;

        cursor: pointer;

        position: relative;

        overflow: hidden;

        transition: var(--el-transition-duration-fast);

    }

    .avatar-uploader .el-upload:hover {

        border-color: var(--el-color-primary);

    }

    .el-icon.avatar-uploader-icon {

        font-size: 28px;

        color: #8c939d;

        width: 178px;

        height: 178px;

        text-align: center;

    }

    .hide .el-upload--picture-card {

        display: none;

    }

</style>

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.jsElement UI的帮助下,实现多图片上传也非常简单。我们可以使用`el-upload`组件来实现多图片上传功能。 HTML代码: ```html <template> <el-upload class="upload-demo" ref="upload" :action="uploadUrl" :multiple="true" :on-success="handleUploadSuccess" :on-error="handleUploadError" :limit="limit"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> </template> ``` 在这个例子中,我们使用了`el-upload`组件来实现多图片上传功能。`multiple`属性设置为`true`,表示允许上传多个文件。`action`属性指定上传图片的URL,`on-success`和`on-error`属性分别指定上传成功和上传失败的回调函数。`limit`属性用于指定上传文件的最大数量。在点击上传按钮后,用户可以选择多个文件进行上传。 JavaScript代码: ```javascript <script> export default { data() { return { uploadUrl: '/upload', limit: 5, fileList: [] }; }, methods: { handleUploadSuccess(response, file) { this.fileList.push({ name: file.name, url: response.url }); this.$message.success('上传成功'); }, handleUploadError(error, file, fileList) { this.$message.error('上传失败'); } } }; </script> ``` 在这个例子中,我们定义了两个回调函数`handleUploadSuccess`和`handleUploadError`,分别用于处理上传成功和上传失败的情况。在`handleUploadSuccess`函数中,我们将上传成功的图片的名称和路径添加到`fileList`数组中,以便后续使用。在`handleUploadError`函数中,我们使用`$message`组件来提示用户上传失败的信息。 需要注意的是,我们还需要在服务器端实现图片上传的逻辑。具体实现方式可以参考前面提到的PHP和Python代码示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值