def set_avatar_url(): """ 设置用户头像信息 1. 获取参数,avatar, user_id,request.filter.get('avatar') 2. 检验参数存在 3. 读取图片数据,data= avatar.read() 4. 调用七牛云接口,上传用户头像 5. 保存用户头像信息到数据库 6. 拼接用户头像图片的完整路径,七牛云外链域名+图片文件名 7. 返回结果 :return: """ # 获取参数 user_id = g.user_id avatar = request.files.get('avatar') # 校验参数不存在 if not avatar: return jsonify(errno=RET.PARAMERR, errmsg='图片未上传') # 读取图片数据 avatar_data = avatar.read() # 调用七牛云接口,上传用户头像 try: image_name = storage(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传头像失败') # 保存用户头像数据 try: # 使用update更新用户信息 User.query.filter_by(id=user_id).update({'avatar_url': image_name}) # 提交数据 db.session.commit() except Exception as e: current_app.logger.error(e) # 提交数据异常,需要进行回滚 db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存用户头像数据异常') # 拼接头像的完整路径 image_url = constants.QINIU_DOMIN_PREFIX + image_name # 返回数据 return jsonify(errno=RET.OK, errmsg='OK', data={'avatar_url': image_url})
def save_house_image(house_id): """ 保存房屋图片 1. 获取参数,获取用户上传的房屋图片request.files.get('house_image') 2. 通过house_id,保存房屋图片,查询数据库确定房屋存在 3. 校验查询结果 4. 读取图片数据 5. 调用七牛云接口,上传房屋图片 6. 保存房屋图片,house_image = HouseImage() 7. 保存房屋图片到房屋表,主图片设置判断 8. 提交数据到数据库,如果发生异常需要进行回滚 9. 拼接路径,返回前端图片url :param house_id: :return: """ # 获取参数图片文件 image = request.files.get('house_image') # 校验参数 if not image: return jsonify(errno=RET.PARAMERR,errmsg='图片未上传') # 检验房屋存在 try: house = House.query.filter_by(id=house_id).first() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR,errmsg='查询房屋数据异常') # 校验查询结果 if not house: return jsonify(errno=RET.NODATA,errmsg='房屋不存在') # 读取图片数据 image_data = image.read() # 调用七牛云接口 try: image_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='七牛上传图片失败') # 存储图片数据到mysql数据库中 house_image = HouseImage() house_image.house_id =house_id house_image.url = image_name # 把图片数据加入到数据库会话对象中,HouseImage()模型类 db.session.add(house_image) # 判断房屋主图片是否设置,因为首页需要展示房屋幻灯片信息,添加主图片设置 if not house.index_image_url: house.index_image_url = image_name # 把图片数据加入到数据库会话对象中,House()模型类 db.session.add(house) # 提交数据到数据库中 try: db.session.commit() except Exception as e: current_app.logger.error(e) # 存储数据发生异常,需要进行回滚 db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='存储房屋图片异常') # 拼接图片的绝对路径,返回前端 image_url = constants.QINIU_DOMIN_PREFIX + image_name return jsonify(errno=RET.OK, errmsg='OK', data={'url':image_url})