element上传图片

本文介绍了如何在Vue应用中使用el-upload组件实现文件上传功能,包括设置上传URL、添加文件验证、授权头管理以及处理上传成功和移除事件。重点展示了如何结合JWT进行身份验证和处理文件列表操作。

在这里插入图片描述

<el-form-item label="上传:">
            <el-upload class="upload-demo" :on-remove="handleRemove" :before-upload="beforeAvatarUpload" :headers="headers" :action="updateUrl"
               :on-success="handleSuccess" multiple :file-list="fileList">
              <el-button size="small" type="primary">点击上传</el-button>
            </el-upload>
 </el-form-item>

data里

updateUrl:process.env.VUE_APP_BASE_API + '/resource/oss/upload',
headers: {
  Authorization: 'Bearer '
},
fileList :[]
created() {
  const adminToken = this.getCookie('Admin-Token');
  if (adminToken) {
     this.headers.Authorization = `Bearer ${adminToken}`;
   }
 },
methods: {
      getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return parts.pop().split(';').shift();
      },

	handleSuccess(response, file, fileList) {
        console.log('Upload response:', response);
        this.caseInfo.fvUrl.push(response.data.url)
      },
      beforeAvatarUpload(file) {
        const allowedFormats = ['image/jpeg', 'image/png', 'image/gif', 'image/bmp', 'image/webp'];
        const isValidFormat = allowedFormats.includes(file.type);
        if (!isValidFormat) {
          this.$message.error('请上传JPEG、PNG、GIF、BMP或WebP格式的图片');
        }
        return isValidFormat;
      },
 handleRemove(file, fileList) {
        console.log(file, fileList);

        this.fileList = this.fileList.filter(item => item.url !== file.url);
        this.caseInfo.fvUrl = this.caseInfo.fvUrl.filter(url => url !== file.url);
        console.log(this.fileList)
        console.log(this.caseInfo.fvUrl);
      },
}
### 使用 Element UI 实现图片上传功能 在前端开发中,`Element UI` 提供了一个强大的 `el-upload` 组件用于处理文件和图片上传需求。以下是一个完整的示例代码,展示如何通过该组件实现图片上传功能。 #### 基本配置 为了实现图片上传功能,可以按照如下方式设置属性: - **action**: 图片上传的目标 URL 地址。 - **show-file-list**: 是否显示已上传文件列表,默认为 `true`,如果不需要显示,则将其设为 `false`。 - **on-success**: 文件上传成功后的回调函数。 - **before-upload**: 上传前的钩子函数,可用于校验文件大小或类型。 以下是基于引用中的代码片段扩展而来的完整示例[^1]: ```html <template> <el-form :model="form"> <el-form-item label="头像" prop="imageUrl"> <el-upload class="avatar-uploader" action="https://example.com/api/upload" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" > <img v-if="form.imageUrl" :src="form.imageUrl" class="avatar" /> <i v-else class="el-icon-plus avatar-uploader-icon">点击上传</i> </el-upload> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { imageUrl: '', // 存储图片路径 }, }; }, methods: { handleAvatarSuccess(res, file) { this.form.imageUrl = URL.createObjectURL(file.raw); // 设置预览图 }, beforeAvatarUpload(file) { const isJPG = file.type === 'image/jpeg'; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG) { this.$message.error('仅支持 JPG 格式的图片'); } if (!isLt2M) { this.$message.error('图片大小不得超过 2MB'); } return isJPG && isLt2M; }, }, }; </script> <style scoped> .avatar-uploader .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409eff; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; width: 178px; height: 178px; line-height: 178px; text-align: center; } .avatar { width: 178px; height: 178px; display: block; } </style> ``` 此代码实现了单张图片上传功能,并提供了上传成功的回调以及上传前的验证逻辑[^1]。 --- #### 高级功能:携带额外参数上传 如果需要在上传过程中传递额外参数到服务器端,可以通过 `data` 属性指定附加数据。例如,在引用[2]的基础上,我们可以这样修改代码[^2]: ```html <el-upload class="upload-container" :action="uploadAPI" :data="{ userId: 123 }" <!-- 添加自定义参数 --> :auto-upload="false" :on-success="onUploadSuccess" > <el-button type="primary" icon="el-icon-upload2">选择文件</el-button> </el-upload> ``` 在此处,`:data` 中指定了一个键值对 `{ userId: 123 }`,它会在请求体中作为表单字段发送给服务端。 --- #### 自定义样式与交互 除了基本功能外,还可以利用 `Element UI` 的其他特性增强用户体验。比如,当用户点击按钮时弹出提示框或者动态调整可见列等功能都可以借助其内置组件完成[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值