def upload_avatar(): try: image_data = request.files.get('avatar') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="图片获取失败") try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") user_id = session.get('user_id') try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="查询用户失败") if not user: return jsonify(errno=RET.NODATA, errmsg='用户不存在') user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg="储存用户头像失败") avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg="上传头像成功", data=avatar_url)
def upload_house_imaeg(): """发布房屋图片 0.判断用户是否是登录 @login_required 1.接受参数:image_data, house_id, 并做校验 2.使用house_id查询house模型对象数据,因为如果查询不出来,就不需要上传图片了 3.调用上传图片的工具方法,发布房屋图片 4.将图片的七牛云的key,存储到数据库 5.响应结果:上传的房屋图片,需要立即刷新出来 """ # 1.接受参数:image_data, house_id, 并做校验 try: image_data = request.files.get('house_image') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='无法收到房屋图片') house_id = request.form.get('house_id') if not house_id: return jsonify(errno=RET.PARAMERR, errmsg='缺少必传参数') # 2.使用house_id查询house模型对象数据,因为如果查询不出来,就不需要上传图片了 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询房屋数据失败') if not house: return jsonify(errno=RET.NODATA, errmsg='房屋不存在') # 3.调用上传图片的工具方法,发布房屋图片 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传房屋图片失败') # 4.将图片的七牛云的key,存储到数据库 house_image = HouseImage() house_image.house_id = house_id house_image.url = key # 选择一个图片,作为房屋的默认图片 if not house.index_image_url: house.index_image_url = key try: db.session.add(house_image) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='存储房屋图片失败') # 5.响应结果:上传的房屋图片,需要立即刷新出来 image_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='发布房屋图片成功', data={'image_url': image_url})
def upload_house_image(): """上传房屋图片 0.判断是否登录 1.接受参数,image_data,house_id 2.使用house_id,查询房屋信息,只有当房屋存在时,才会上传图片 3.调用上传图片的工具,上传房屋的图片 4.创建HouseImage模型对象,并保存房屋图片key,保存到数据库 5.响应结果 """ # 1.接受参数,image_data,house_id try: image_data = request.files.get('house_image') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg="图⽚有误") house_id = request.form.get('house_id') if not house_id: return jsonify(errno=RET.PARAMERR, errmsg="缺少必传参数") # 获取房屋模型对象 # 2.使用house_id,查询房屋信息,只有当房屋存在时,才会上传图片 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询房屋数据失败') if not house: return jsonify(errno=RET.NODATA, errmsg='房屋不存在') # 3.调用上传图片的工具,上传房屋的图片 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图⽚失败') # 4.创建HouseImage模型对象,并保存房屋图片key,保存到数据库 house_image = HouseImage() house_image.house_id = house_id house_image.url = key # 给房屋设置默认的图片 if not house.index_image_url: house.index_image_url = key try: db.session.add(house_image) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存房屋图⽚数据失败') # 5.响应结果 house_image_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='上传房屋图⽚成功', data={'house_image_url': house_image_url})
def upload_house_image(): """上传房屋图片 1.接受参数:image_data, house_id, 并校验 2.使用house_id, 查询房屋信息,只有当房屋存在时,才会上传图片 3.调用上传图片的工具方法,上传房屋图片 4.创建HouseImage模型对象,并保存房屋图片key,并保存到数据库 5.响应结果 """ # 1.接受参数:image_data, house_id, 并校验 try: image_data = request.files.get('house_image') except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='获取图片失败') house_id = request.form.get('house_id') if not house_id: return jsonify(errno=RET.PARAMERR, errmsg='缺少必传参数') # 2.使用house_id, 查询房屋信息,只有当房屋存在时,才会上传图片 try: house = House.query.get(house_id) except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询数据失败') # 3.调用上传图片的工具方法,上传房屋图片 try: key = upload_image(image_data) except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片失败') # 4.创建HouseImage模型对象,并保存房屋图片key,并保存到数据库 house_image = HouseImage() house_image.house_id = house_id house_image.url = key # 给房屋设置默认的图片 if not house.index_image_url: house.index_image_url = key try: db.session.add(house_image) db.session.commit() except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存图片失败') # 5.响应结果 house_image_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='上传图片成功', data={'house_image_url': house_image_url})
def set_house_image(): # 0.判断用用户是否登录 # 1.接受参数:房屋图片,house_id,并校验参数 try: image_data = request.files.get('house_image') except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.PARAMERR, error_msg=u'图片有误') try: house_id = request.form.get('house_id') except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.PARAMERR, error_msg=u'缺少必传参数') # 2.获取房屋模型对象 try: house = House.query.filter(House.id == house_id).first() except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.DBERR, error_msg=u'查询房屋数据失败') if not house: return jsonify(error_no=RET.NODATA, error_msg=u'房屋不存在!') # 3.上传房屋图片片 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.THIRDERR, error_msg=u'上传房屋图片失败') # 4.创建house_image模型对象,存储房屋图片片数据到数据库 house_image = HouseImage() house_image.house_id = house_id house_image.url = key # 设置房屋默认图片 if not house.index_image_url: house.index_image_url = key try: db.session.add(house_image) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.DBERR, error_msg=u'提交数据失败') # 5.响应结果 house_image_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(error_no=RET.OK, error_msg='上传房屋图片片成功', data={'house_image_url': house_image_url})
def upload_avatar(): """上传用户头像 0.todo 判断用户是否登录 1.获取用户上传的头像数据,并校验 2.查询当前的登录用户 3.将用户头像赋值给当前的登录用户的user模型 4.响应个人信息的结果 :return: """ # 0.todo 判断用户是否登录 # 1.获取用户上传的头像数据,并校验 try: avatar_data = request.files.get('avatar') except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='获取用户头像失败') # 2.查询当前的登录用户 user_id = g.user_id try: user = User.query.get(user_id) except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询用户数据失败') if not user: return jsonify(errno=RET.PARAMERR, errmsg='用户不存在') try: key = upload_image(avatar_data) except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传用户头像失败') # 4.将用户头像赋值给当前的登录用户的user模型 user.avatar_url = key # 5.响应个人信息的结果 try: db.session.commit() except Exception as e: logging.error(e) current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存用户头像失败') # 6.响应上传头像的结果 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='上传用户头像成功', data=avatar_url)
def upload_avatar(): """提供用户头像上传 0. TODO 先判断用户是否登录 1.接受请求参数:avatar对应的图片数据,并校验 2.调用上传图片的工具方法 3.存储图片的key到user.avatar_url属性中 4.响应上传结果,在结果中传入avatar_url,方便用户上传完成后立即刷新头像 """ # 1.接受请求参数:avatar对应的图片数据,并校验 try: image_data = request.files.get('avatar') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='头像参数错误') # 2.调用上传图片的工具方法 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传头像失败') # 3.存储图片的key到user.avatar_url属性中 # 获取登录用户的user_id # user_id = session.get('user_id') user_id = g.user_id # 查询登录用户对象 try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询用户数据失败') if not user: return jsonify(errno=RET.NODATA, errmsg='用户不存在') # 给登录用户模型属性赋新值 user.avatar_url = key # 将新值保存的数据库 try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='存储用户头像地址失败') # 4.响应上传结果,在结果中传入avatar_url,方便用户上传完成后立即刷新头像 # 拼接访问头像的全路径 # http://oyucyko3w.bkt.clouddn.com/FtEAyyPRhUT8SU3f5DNPeejBjMV5 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='上传头像成功', data=avatar_url)
def upload_avatar(): """ 上传用户头像 0. 判断用户是否登录 1. 获取到上传的图片文件 2. 判断图片文件是否存在 3. 上传图片文件到七牛云 4. 上传成功之后,保存到用户表的头像字段中 5. 返回响应,带上头像地址 :return: """ # 1. 获取到上传的图片文件 / 2. 判断图片文件是否存在 try: avatar_data = request.files.get("avatar").read() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="请取文件失败") # 3. 上传图片文件到七牛云 try: key = upload_image(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 4. 上传成功之后,保存到用户表的头像字段中 # user_id = session.get("user_id") user_id = g.user_id try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="查询数据失败") if not user: return jsonify(errno=RET.NODATA, errmsg="用户不存在") # 设置值到用户模型身上数据 user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg="保存数据失败") # 5. 返回响应,带上头像地址 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg="上传成功", data={"avatar_url": avatar_url})
def upload_avatar(): """ 上传用户头像 0.TODO 判断用户是否登录 1.获取用户上传的头像数据,并校验 2.查询当前的登录用户 3.调用上传工具方法实现用户头像的上传 4.将用户头像赋值给当前的登录用户的user模型 5.将数据保存到数据库 6.响应上传用户头像的结果 """ # 2.查询当前的登录用户 # 下面方式取不到数据会报错,选用get取得数据 # user_id = session["user_id"] user_id = g.user_id # 1. 获取用户上传的头像数据,并校验 try: avatar_data = request.files.get("avatar") except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='获取用户头像失败') try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询用户数据失败') if not user: return jsonify(errno=RET.NODATA, errmsg="用户不存在") # 3.调用上传工具方法实现用户头像的上传 try: key = upload_image(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传用户头像失败') # 4.将用户头像赋值给当前的登录用户的user模型 user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存用户头像失败') # 6.响应上传用户头像的结果 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg="OK", data=avatar_url)
def upload_house_image(): """图片上传,会根据是什么房屋的图片--要房屋house_id 如果都无误则返结果回去""" try: image_data = request.files.get('house_image') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='图片有误') house_id = request.form.get('house_id') if not house_id: return jsonify(errno=RET.PARAMERR, errmsg='缺少拿必传参数') #记住要先有房子才有上传图片,有了房子后保存房屋id到mysql数据库 #在拿到房屋id后,再到自己的数据库中用这个id去查找,看是否有对应的房屋 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询房屋数据失败') if not house: return jsonify(errno=RET.NODATA, errmsg='房屋不存在') #若查到有此id对应的房屋,则可以上传图片 try: #上传图片到七牛云 怎么由七牛云拿到浏览器渲染? 在前端代码写上下载图片的地址 key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片失败') #上传了图片之后记得到把这些数据记录下来,以便后面操作 house_image = HouseImage() #创建对象,作用用于调用方法 house_image.house_id = house_id house_image.url = key #这里是表示什么,怎么实现? # 设置房屋默认的图片 if not house.index_image_url: house.index_image_url = key try: db.session.add(house_image) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存房屋图片数据失败') house_image_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='上传图片成功', data={'house_image_url': house_image_url})
def upload_avatar(): """ 0.判断用户是否登陆 1.获取到上传的图片文件 2.判断文件是否存在 3.将文件上传到七牛云 4.上传成功之后,将图片保存到用户表头像字段 5.返回响应 :return: """ # 1.获取到上传的图片文件/2.判断文件是否存在 try: avatar_data = request.files.get('avatar').read() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg='读取文件失败') # 3.上传文件图片到七牛云 try: key = upload_image(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='图片上传失败') # 4.上传成功之后,将图片保存到用户表头像字段 user_id = g.user_id try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询数据失败') if not user: return jsonify(errno=RET.NODATA, errmsg='用户不存在') # 设置值到user的字段上 user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存数据失败') # 5.返回响应 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg='OK',data={'avatar_url':avatar_url})
def upload_avatar(): """上传用户头像 0.TODO 判断用户是否登录 1.获取用户上传的头像数据 2.调用上传图片的方法,上传头像到七牛云 3.上传如果成功,储存图片唯一标识到数据库 4.如果上传成功响应结果 """ # 1.获取用户上传的头像数据 try: # 用files取文件的内容取不到会报错, image_data = request.files.get('avatar') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="图像获取失败") # 2.调用上传图片的方法,上传头像到七牛云 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图像失败") # 3.上传如果成功,储存图片唯一标识到数据库 # 用户头像要和用户绑定,所有要查出是谁在上传头像 user_id = session.get('user_id') try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="查询用户失败") # 储存key到avatar_url user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg="存储⽤户头像失败") # 4.如果上传成功响应结果 avatar_url = constants.QINIU_DOMIN_PREFIX + key return jsonify(errno=RET.OK, errmsg="上传头像成功", data=avatar_url)
def upload_avatar(): """提供用户头像上传 0. TODO 先判断用户是否登录 1. 获取图片数据 2. 调用上传工具进行图片上传 3. 获取返回的值,存储到数据库中并拼接出图片路由 4. 响应上传结果 """ try: image_data = request.files.get('avatar') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg='头像参数错误') try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传头像失败') # user_id = session.get('user_id') user_id = g.user_id try: user = User.query.get(user_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='查询用户数据失败') if not user: return jsonify(errno=RET.NODATA, errmsg='用户不存在') user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='存储用户头像地址失败') avatar_url = constants.QINIU_DOMIN_PREFIX + key print(avatar_url) return jsonify(errno=RET.OK, errmsg='上传头像成功', data=avatar_url)
def upload_avatar(): """上传图片到七牛云""" # 0.TODO 判断当前用户是否登录 # 1.获取用用户上传的头像数据 user_id = session['user_id'] try: image_data = request.files.get('avatar') except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.PARAMERR, error_msg=u'获取文件数据失败') # 2.调用用上传图片片的方方法,上传头像到七牛牛云 try: key = upload_image(image_data) except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.DATAERR, error_msg=u'上传图片错误!') # 3.如果上传成功,存储图片片唯一一标识到数据库 try: user = User.query.filter(User.id == user_id).first() except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.DBERR, error_msg=u'查询用户失败') if not user: return jsonify(error_no=RET.NODATA, error_msg=u'用户不存在!') user.avatar_url = key try: db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(error_no=RET.DBERR, error_msg=u'图片提交数据库失败') # 4.如果上传成功响应结果 response_data = user.to_dict() return jsonify(error_no=RET.OK, error_msg=u'图片上传成功!', data=response_data)
def upload_house_image(): """ 1. 取到参数,图片,房屋的id 2. 获取到指定id的房屋模型 3. 上传图片到七牛云 4. 初始化房屋图片的模型 5. 设置数据并且保存到数据库 6. 返回响应-->图片的url :return: """ # 1. 取到参数,图片,房屋的id try: house_image = request.files.get("house_image").read() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg="参数错误") # 取到房屋id house_id = request.form.get("house_id") if not house_id: return jsonify(errno=RET.PARAMERR, errmsg="参数错误") # 2. 获取到指定id的房屋模型 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="查询房屋数据失败") if not house: return jsonify(errno=RET.NODATA, errmsg="当前房屋不存在") # 3. 上传图片到七牛云 try: key = image_storage.upload_image(house_image) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 判断当前房屋是否设置了index_image,如果没有设置就设置 if not house.index_image_url: house.index_image_url = key # 4. 初始化房屋图片的模型 house_image_model = HouseImage() # 5. 设置数据并且保存到数据库 house_image_model.house_id = house_id house_image_model.url = key try: db.session.add(house_image_model) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="添加数据失败") # 6. 返回响应-->图片的url return jsonify(errno=RET.OK, errmsg="上传成功", data={"image_url": constants.QINIU_DOMIN_PREFIX + key})