def set_user_avatar(): """设置用户的头像 参数: 图片(多媒体表单格式) 用户id (g.user_id) """ # 使用了login_required装饰器后,可以从g对象中获取用户user_id user_id = g.user_id # 获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传图片") image_data = image_file.read() # 调用七牛上传图片,返回文件名 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 保存文件名到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: # 数据库操作异常时要回滚 db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") # 头像地址 avatar_url = constants.QINIU_URL_DOMAIN + file_name # 保存成功返回 return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """ 设置用户头像 :param: 图片数据,多媒体表单 :return: 头像地址 """ # 装饰器的代码中已经将user_id保存到g对象中,所以视图中可以直接读取 user_id = g.user_id # 获取图片数据 image_file = request.files.get('avatar') if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg='未上传图片') image_data = image_file.read() # 调用七牛云上传图片,返回文件名 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='闪传图片失败') # 保存文件名(图片地址)到数据库 try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存图片信息失败') avatar_url = constants.QINIU_URL_DOMAIN + file_name # 保存成功返回 return jsonify(errno=RET.OK, errmsg='保存成功', data={'avatar_url': avatar_url})
def set_user_avatar(): """ :return: json 设置的结果 """ user_id = g.user_id image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg='未上传图片') # 调用七牛存储 file_data = image_file.read() try: file_name = storage(file_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片失败') # 保存上传成功的图片url (域名都相同, 节约空间,只保存图片名) try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存图片信息失败') avatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg='上传图片成功', data={'avatar_url': avatar_url})
def set_user_avatar(): """设置用户头像""" # 获取参数 user_id = g.user_id image_file = request.files.get('avatar') # 校验参数 if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg='未上传文件') # 保存头像数据 image_data = image_file.read() try: file_name = storage(image_data) # print (file_name) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传文件失败') # 将文件名信息保存到数据库中 try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存图像信息失败') # 返回值 avatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg='保存头像成功', data={'avatar_url': avatar_url})
def set_user_avatar(): """ 参数: 图片(多媒体表单格式) 用户id(装饰器的g对象中) """ # 1. 获取参数 user_id = g.user_id image_file = request.files.get("avatar") # 2. 校验参数 if image_file is None: return jsonify(error=RET.PARAMERR, errmsg='未上传图片') # 3. 业务逻辑 # 3.1 获取图片数据 image_data = image_file.read() # 3.2 调用七牛上传图片 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片失败') # 3.3 获取该数据库对象,修改头像 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") # 4. 返回应答 # 拼接头像url avatar_url = QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): user_id = g.user_id image_file = request.files.get('avatar') # 获取图片 if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg='未上传图片') image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片失败') try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='图片信息失败') avatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg='保存成功', data={'avatar_url': avatar_url})
def set_user_avatar(): """ 设置用户的头像 参数:图片 用户id(g.user_id) :return: """ #装饰器的代码中已经将user_id保存到g全局对象中,所以试图可以直接读取 user_id=g.user_id #对于上传的文件都要用files,其余的都要用args image_file=request.files.get("avatar") #需要前端name定义这个名字 if image_file is None: return jsonify(errno=RET.PARAMERR,errmsg="未上传图片") #读取二进制的数据,如果是put_file形式的就不用了 image_data=image_file.read() #调用七牛云上传图片 try: # 调用这个上传图片的方法,得到保存的图片的文件名 file_name=storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") #保存文件名到数据库 try: #查询对应的id 更新avatar_url字段,没有添加字段, 存在,更新 User.query.filter_by(id=user_id).update({"avatar_url":file_name}) db.session.commit() #提交保存 except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") #保存成功以后,将图片的完整路径返回给前端,拼接路径字符串 avatar_url=constants.QINIU_URL_DOMAIN+ file_name return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url":avatar_url})
def set_user_avatar(): """设置用户头像""" # 获取参数,从g对象中取,头像图片,用户 user_id = g.user_id # 获取用户头像图片 image_file = request.files.get("avatar") # 校验参数 # 判断用户是否上传头像 if image_file is None: # 没有上传头像 return jsonify(errno=RET.PARAMERR, errmsg="用户未上传头像") # 业务处理 # 保存用户头像数据 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传头像异常") # 将用户的文件信息保存到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollbaack() return jsonify(errno=RET.DBERR, errmsg="保存头像信息失败") # 拼接访问路径 avatar_url = constants.QINIU_URL_DOMAIN + file_name # 返回数据 return jsonify(errno=RET.OK, errmsg="上传头像成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """设置用户头像""" # 获取参数, 头像图片 用户 user_id = g.user_id image_file = request.files.get("avatar") # 校验参数 if image_file is None: # 表示用户没有上传头像 return jsonify(error_code=RET.PARAMERR, errmsg="未上传头像") # 保存用户头像数据 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(error_code=RET.THIRDERR, errmsg="上传头像异常") # 将文件名保存到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(error_code=RET.DBERR, errmsg="保存头像信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 返回值 return jsonify(error_code=RET.OK, errmsg="保存头像成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """ 设置用户的头像 参数:图片(使用多媒体表单进行传数据),用户id(g对象中的user_id) :return: """ # login_required装饰器中已经将user_id保存到g对象中 user_id = g.user_id # 获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传图片") # 图片转换为2进制数据 image_data = image_file.read() # 调用七牛, 返回名字 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 将文件名保存到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") avatar_url = constant.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """设置用户头像""" # 获取参数,头像图片,用户 user_id = g.user_id image_file = request.files.get("avatar") # 校验参数 if image_file is None: #表示用户没有上传头像 return jsonify(errno = RET.PARAMERR,errmsg = "未上传头像") # 保存用户头像数据 image_data = image_file.read() #使用read读取image_file对象里的数据 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传头像异常") #将文件名保存到mysql中 try: User.query.filter_by(id=user_id).update({"avatar_url":file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="保存文件名失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 返回值 return jsonify(errno=RET.OK, errmsg="头像保存成功",data={"avatar_url":avatar_url})
def set_user_avatar(): """设置用户头像""" user_id = g.user_id image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传头像") image_data = image_file.read() # 上传图片文件至七牛 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="第三方错误") # 将文件名信息存在数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存头像信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 返回值 return jsonify(errno=RET.OK, errmsg="保存头像成功", data={"avatar_url": avatar_url})
def set_user_avatar(): # 接收参数 req_file = request.files.get("avatar") # 校验参数 if req_file is None: return jsonify(errno=RET.PARAMERR, errmsg="请选择要上传的图片") # 业务逻辑 file_data = req_file.read() try: file_name = storage(file_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片异常") user_id = g.user_id try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图像信息出错") avatar_url = constants.QINIU_USER_ACCESS_DOMAIN_URL + file_name # 返回 return jsonify(errno=RET.OK, errmsg="OK", avatar_url=avatar_url)
def set_user_avatar(): """头像""" user_id = g.user_id # 获取头像图片数据 avatar = request.files.get("avatar") if not avatar: return jsonify(errno=RET.PARAMERR, errmsg="未传头像") # 读取上传的文件内容,并调用自己封装的方法上传到七牛 avatar_data = avatar.read() try: img_name = storage(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传头像失败") # 保存头像信息 try: User.query.filter_by(id=user_id).update({"avatar_url": img_name}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg="保存头像失败") # 将图片的路径补充完整,返回给前端 img_url = constants.QINIU_DOMIN_PREFIX + img_name return jsonify(errno=RET.OK, errmsg="保存头像成功", data={"avatar_url": img_url})
def set_user_avatar(): '''设置用户的头像 参数: 图片(多媒体表单格式) 用户id (g.user_id) :return: ''' # 装饰器的代码已近将user_id保存到g对象中 所以试图中可以直接读取 user_id = g.user_id # 获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传图片") image_data = image_file.read() # 调用七牛上传图片 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 保存文件名到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url":file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="保存图片信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 保存成功返回 return jsonify(errno=RET.OK, errmsg="保存成功", data={"avator":avatar_url})
def save_house_image(): # 保存房屋的图片 image_file = request.files.get("house_image") house_id = request.form.get("house_id") if not all([image_file, house_id]): return jsonify(errno=RET.PARAMERR, errmsg="参数错误") # 判断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 house is None: return jsonify(errno=RET.NODATA, errmsg="房屋不存在") # 保存图片到七牛中 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="保存图片失败") house_image = HouseImage(house_id=house_id, url=file_name) db.session.add(house_image) if not house.index_image_url: house.index_image_url = file_name 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_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="OK", data={"image_url": image_url})
def set_user_avatar(): '''设置用户头像''' #获取参数,头像图片,用户 user_id = g.user_id image_file = request.files.get('avatar') #校验参数 if image_file is None: #表示用户没有上传头像 return jsonify(errno=RET.PARAMERR, errmsg='未上传头像') #保存头像数据 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传头像异常') #将文件名信息保存到数据库中 try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存头像信息失败') #图像url拼接 avatar_url = constants.QINIU_URL_DOMAIN + file_name #返回值 return jsonify(errno=RET.OK, errmsg='保存头像成功', data={'avatar_url': avatar_url})
def set_user_avatar(): """设置用户头像 参数:图片(多媒体表单),用户id(g.user_id) """ # 装饰器的代码中已经将user_id保存到g对象中,所以视图中可以直接读取 user_id = g.user_id # 获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="图片未上传") image_data = image_file.read() # 调用七牛云上传图片,返回文件名 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传失败") # 保存到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 保存成功,返回 return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """设置用户头像""" # 获取参数, 头像图片、用户 user_id = g.user_id image_file = request.files.get("avatar") # 校验参数 if image_file is None: # 表示用户没有上传头像 return jsonify(errno=RET.PARAMERR, errmsg="未上传头像") # 保存用户头像数据 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传头像异常") # 将文件名信息保存到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存头像信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name # 返回值 return jsonify(errno=RET.OK, errmsg="保存头像成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """ 设置用户头像 :param:图片(多媒体表单)、用户id(g.user_id) :return: """ user_id = g.user_id image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传图片") image_data = image_file.read() # 调用七牛上传图片 try: file_name = image_storage.storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 保存文件名到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg="保存图片失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """ 参数:图片(多媒体表单) 用户id :return: """ user_id = g.user_id pic = request.files.get('avatar') if pic is None: return jsonify(errno=RET.PARAMERR, msg=u'未上传图片') image_data = pic.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, msg=u'上传失败') # 保存文件名到数据库中 try: User.query.filter_by(id=user_id).update({'avatar_url': file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, msg=u'保存图片信息失败') # 保存成功放回 return jsonify(errno=RET.OK, msg=u'保存成功', data={'avatar_url': constants.QINIU_URL_DOMAIN + file_name})
def set_user_avatar(): """设置用户的头像 参数: 图片(多媒体表单格式) 用户id (g.user_id) """ # 装饰器的代码中已经将user_id保存到g对象中,所以视图中可以直接读取 user_id = g.user_id # 获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(code=RET.PARAMERR, errmsg="未上传") # 调用七牛上传图片,返回文件名 try: file_name = storage(image_file) except Exception as e: current_app.logger.error(e) return jsonify(code=RET.DATAERR, errmsg="上传图片错误") # 保存文件名到数据中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(code=RET.DATAERR, errmsg="保存图片错误") acatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(code=RET.OK, errmsg="保存成功", data={"avatar_url": acatar_url})
def set_user_avatar(): if request.method == 'POST': """设置用户头像""" #装饰器已将user_id保存到g对象中 user_id = g.user_id #获取图片 image_file = request.files.get("avatar") if image_file is None: return jsonify(errorno=RET.PARAMERR, errmsg="获取图片失败") ##调用七牛上传图片 image_data = image_file.read() try: file_name = storage(image_data) print("file_name:", file_name) except Exception as e: current_app.logger.error(e) return jsonify(errorno=RET.THIRDERR, errmsg="上传图片到七牛失败") ##保存图片到数据库中 try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errorno=RET.DBERR, errmsg="保存图片到数据库失败") avatar_url = Const.QINIU_URL_DOMAIN + "/" + file_name ##保存成功,返回七牛完整链接地址,供前端展示 print("avatar_url::", avatar_url) return jsonify(errorno=RET.OK, errmsg="保存图片成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """设置用户头像""" user_id = g.user_id # 获取参数(使用 request.files.get 获取的是form表单页面的name字段,不是ajax中的data数据) 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: User.query.filter_by(id=user_id).update({'avatar_url': image_name}) db.session.commit() except Exception as e: # 保存图片名到数据库失败 --> 失败回滚 db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DATAERR, errmsg='保存图片名失败') avatar_url = QINIU_DOMIN_PREFIX + image_name # 返回图片的绝对路径 return jsonify(errno=RET.OK, errmsg='OK', data={'avatar_url': avatar_url})
def set_user_avatar(): """ 设置用户头像 :return: """ user_id = g.get("user_id") image_file = request.files.get("avatar") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="未上传图片") image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) try: User.query.filter_by(id=user_id).update({"avatar_url": file_name}) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") avatar_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="保存成功", data={"avatar_url": avatar_url})
def set_user_avatar(): """ 设置用户头像 1. 获取用户头像参数 2. 验证用户头像数据是否为空 3. 头像上传到七牛云服务 4. 将返回的图图片名称保存到数据库 5. 返回保存结果 """ # 1.获取用户头像信息,并验证 avatar = request.files.get('avatar') user_id = g.user_id if not avatar: return jsonify(errno=RET.PARAMERR, errmsg='未上传头像') avatar_data = avatar.read() # 2. 上传头像信息到七牛云 try: # 保存成功后返回图片再七牛云上名称 result = storage(avatar_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg='上传图片到七牛云失败') # 3.保存用户名称到数据库 try: User.query.filter_by(id=user_id).update({'avatar_url': result}) db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg='保存用户头像信息失败') # 4. 拼接图片绝对地址信息,返回给浏览器 image_url = constants.QINIU_DOMIN_PREFIX + result print image_url # 5. 向浏览器返回成功的信息 return jsonify(errno=RET.OK, errmsg='OK', data={'avatar_url': image_url})
def save_house_image(): """ 保存房屋图片 接收数据: 图片 房屋di :return: 图片链接 json数据 """ # 接收数据 house_id = request.form.get("house_id") house_image = request.files.get("house_image") # 校验数据 # 判断参数是否完整 if not all([house_id, house_image]): return jsonify(errnum=RET.PARAMERR, errmsg=u"参数不完整") # 判断房屋是否存在 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errnum=RET.DBERR, errmsg=u"数据库异常") if house is None: return jsonify(errnum=RET.NODATA, errmsg=u"房屋不存在") # 业务处理 # 读取房屋图片数据 image_data = house_image.read() # 保存在七牛 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errnum=RET.THIRDERR, errmsg=u"保存图片失败") # 把如果House下的index_image_url为空时, 图片链接保存在House下的index_image_url 和 HouseImage下的url if not house.index_image_url: # 表示房屋下的index_image_url为空, index_image_url必须保存一张房屋的主图片 house.index_image_url = file_name db.session.add(house) house_image = HouseImage(house_id=house_id, url=file_name) db.session.add(house_image) try: db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errnum=RET.DBERR, errmsg=u"保存数据失败") # 构造上下文 image_url = QINIU_URL_FILELD + file_name # 返回应答 return jsonify(errnum=RET.OK, errmsg=u"保存图片成功", data={"image_url": image_url})
def set_house_image(): """ 上传房屋的图片信息 请求参数:图片文件 房屋id值 :return: 正常json 异常json """ # 获取参数 image_file = request.files.get('house_image') house_id = request.form.get('house_id') # 参数检验 if not all([image_file, house_id]): return jsonify(errno=RET.PARAMERR, errmsg="参数不完整") if image_file is None: return jsonify(errno=RET.PARAMERR, errmsg="图片获取失败") if house_id is None: return jsonify(errno=RET.PARAMERR, errmsg="参数获取失败") # 查询当前房屋是否存在 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="数据库异常") if house is None: return jsonify(errno=RET.DBERR, errmsg="当前房屋不存在") # 读取图片数据 image_data = image_file.read() # 将数据上传到七牛 try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="图片上传异常") # 房屋图片数据保存 try: house_image = HouseImage(house_id=house_id, url=file_name) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="数据库异常") db.session.add(house_image) # 将房屋信息中的图片信息也添加 house.index_image_url = file_name db.session.add(house) try: db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="数据库异常") # 图片上传成功 return jsonify(errno=RET.OK, errmsg="OK")
def save_house_image(): """保存房屋的图片""" # 获取参数 房屋的图片、房屋编号 house_id = request.form.get("house_id") image_file = request.files.get("house_image") # 校验参数 if not all([house_id, image_file]): return jsonify(errno=RET.PARAMERR, errmsg="参数不完整") # 1. 判断房屋是否存在 # 2. 上传房屋图片到七牛中 # 3. 保存图片信息到数据库中 # 4. 处理房屋基本信息中的主图片 # 5. 统一提交数据 # 1. 判断房屋是否存在 try: house = House.query.get(house_id) except Exception as e: logging.error(e) return jsonify(errno=RET.DBERR, errmsg="数据库异常") if house is None: return jsonify(errno=RET.NODATA, errmsg="房屋不存在") # 2. 上传房屋图片到七牛中 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: logging.error(e) return jsonify(errno=RET.THIRDERR, errmsg="保存房屋图片失败") # 3. 保存图片信息到数据库中 house_image = HouseImage( house_id=house_id, url=file_name ) db.session.add(house_image) # 4. 处理房屋基本信息中的主图片 if not house.index_image_url: house.index_image_url = file_name db.session.add(house) # 5. 统一提交数据 try: db.session.commit() except Exception as e: logging.error(e) db.session.rollback() return jsonify(errno=RET.DBERR, errmsg="保存图片信息失败") image_url = constants.QINIU_URL_DOMAIN + file_name return jsonify(errno=RET.OK, errmsg="保存图片成功", data={"image_url": image_url})
def save_house_image(house_id): ''' 保存房屋图片 1 获取图片文件内容 校验参数 2 根据house_id 查询数据库 校验结果 3 读取图片数据 4 调用骑牛运借口 上传图片 5 保存图片数据 到数据库当中 HouseImage() House() 把一条数据 存储到两张表里 6 如果发生异常 进行回滚 7 拼接路径 返回结果 ''' # 获取图片参数 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='骑牛运上传文件失败') # 保存图片数据到数据库中 house_image = HouseImage() house_image.house_id = house_id house_image.url = image_name # 提交模型类对象 到数据库 db.session.add(house_image) # 房屋主图片如果没有设置 默认添加房屋第一章图片为主图片 if not house.index_image_url: house.index_image_url = image_name db.sesiion.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=image_url)
def save_house_image(): """ 保存房屋的图片 参数:图片,房屋id :return: """ # 获取参数 image_file = request.files.get("house_image") house_id = request.form.get("house_id") # 检验参数完整性 if not all([image_file, house_id]): return jsonify(errno=RET.PARAMERR, errmsg="参数不完整") # 判断房屋信息正确性 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="房屋信息不存在") # 上传图片到七牛云 image_data = image_file.read() try: file_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败") # 保存图片信息到数据库 house_image = HouseImage(house_id=house_id, url=file_name) db.session.add(house_image) # 在models的House有一个主图片需要处理 if not house.index_image_url: # 如果主图为空 house.index_image_url = file_name db.session.add(house) # 数据库提交 try: db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存图片异常") # 拼接图片路径 image_url = constants.QINIU_URL_DOMAIN + file_name # 返回结果 return jsonify(errno=RET.OK, errmsg="OK", data={"image_url": image_url})
def set_house_image(): """设置房屋图片""" # 获取房屋id 房屋图片 house_id = request.form.get("house_id") house_image = request.files.get("house_image") # 校验参数 if not all([house_id, house_image]): return jsonify(error_code=RET.PARAMERR, err_msg="参数不完整") # 判断房屋是否存在 try: house = House.query.get(house_id) except Exception as e: current_app.logger.error(e) return jsonify(error_code=RET.DBERR, errmsg="数据库异常") if house is None: return jsonify(error_code=RET.NODATA, errmsg="房屋不存在") # 上传图片到七牛云 image_data = house_image.read() try: image_name = storage(image_data) except Exception as e: current_app.logger.error(e) return jsonify(error_code=RET.THIRDERR, errmsg="上传异常") # 将图片名保存到数据库 h_image = HouseImage( house_id=house_id, url=image_name ) db.session.add(h_image) if not house.index_image_url: house.index_image_url = image_name db.session.add(house) try: db.session.commit() except Exception as e: current_app.logger.error(e) db.session.rollback() return jsonify(error_code=RET.DBERR, errmsg="保存图片信息失败") image_url = constants.QINIU_URL_DOMAIN + image_name return jsonify(error_code=RET.OK, errmsg="保存图片成功", data={"image_url": image_url})