Element-ui实现图片与内容同时上传

Element-ui实现图片与内容同时上传

前端html

<el-upload
                      class="avatar-uploader"
                      action="#"
                      :http-request="uploadFile" # 上传方法
                      :show-file-list="false"
                      :on-success="handleAvatarSuccess" # 执行成功执行方法
                      :on-change="handleChange" # 图形改变执行方法以实现图形展示
                      :auto-upload="false"
                      :multiple="false"
                      ref="uploadExcel"
                      :before-upload="beforeAvatarUpload"
                      >
                <img v-if="imageUrl" :src="imageUrl" class="avatar">
                <i v-else class="el-icon-user avatar-uploader-icon"></i>
</el-upload>

前端vue

methods: {
      uploadFile(param){
        this.img_file = param.file
      },
     handleChange(file, fileList) {
        this.imageUrl = URL.createObjectURL(file.raw);
      },
      # 内容提交img_file  一同提交
      onSubmit() {
        this.$refs.uploadExcel.submit();
        this.formData = new FormData();
        this.formData.append('id', this.user_id);
        this.formData.append('user_name', this.userinfo.user_name);
        this.formData.append('sex', this.userinfo.sex);
        this.formData.append('sign', this.userinfo.sign);
        this.formData.append('e_mail', this.userinfo.e_mail);
        this.formData.append('address', this.userinfo.address);
        this.formData.append('img_file', this.img_file);
        console.log(this.img_file)
        this.$put(this.API.API_SET_USER, this.formData).then(res => {
          if(res.code==200){
            this.$message({
              message: '设置成功',
              type: 'success'
            });
          }else{
            this.$message.error('设置失败');
          }
        })
      },
      # 验证图片
      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;

      },
   }

后端django

    def put(self, request):
        """更新用户信息"""
        query_params = request.data
        user_id = query_params.get('id')
        password = query_params.get('password')
        img_file = query_params.get('img_file')
        if password == '':
            return response_failure(code=400, message='密码不能为空')
        try:
            user_info = User.objects.filter(id=user_id).first()
            if user_info:
                s_data = {
                    'id': request.data.get('id'),
                    'user_name': query_params.get('user_name') if query_params.get('user_name') else '',
                    'sex': query_params.get('sex') if query_params.get('sex') else '',
                    'sign': query_params.get('sign') if query_params.get('sign') else '',
                    'e_mail': query_params.get('e_mail') if query_params.get('e_mail') else '',
                    'address': query_params.get('address') if query_params.get('address') else ''
                }
                if img_file:
                    s_data['icon'] = img_file
                serializer = UserSerializer(user_info, data=s_data)
                if serializer.is_valid():
                    serializer.save()
                else:
                    return response_failure(code=400, message='保存数据失败')
            else:
                return response_failure(code=400, message='没有该用户id')
        except Exception as e:
            raise e
        return response_success(code=200)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小福不认命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值