示例#1
0
文件: profile.py 项目: okccc/flask01
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})
示例#2
0
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})
示例#3
0
文件: profile.py 项目: cponecp/iHone
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})
示例#4
0
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})
示例#5
0
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})
示例#6
0
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})
示例#7
0
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})
示例#8
0
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})
示例#9
0
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})
示例#10
0
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})
示例#11
0
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})
示例#12
0
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})
示例#13
0
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)
示例#14
0
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})
示例#15
0
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})
示例#16
0
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})
示例#17
0
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})
示例#18
0
文件: profile.py 项目: buppter/iHome
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})
示例#19
0
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})
示例#20
0
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})
示例#21
0
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})
示例#22
0
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})
示例#23
0
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})
示例#24
0
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})
示例#25
0
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})
示例#26
0
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})
示例#27
0
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})
示例#28
0
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")
示例#29
0
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})
示例#30
0
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)
示例#31
0
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})
示例#32
0
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})