示例#1
0
文件: house.py 项目: kindaoqd/iHome
def upload_house_image(house_id):
    """上传房屋图片"""
    try:
        image = request.files.get('house_image').read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg=u'获取图片文件异常')
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=u'房屋查询异常')
    if not house:
        return jsonify(errno=RET.PARAMERR, errmsg=u'房屋不存在')
    # 图片上传七牛云,记录key
    try:
        image_key = storage(image)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg=u'图片上传失败')
    house_image = HouseImage()
    house_image.url = image_key
    house_image.house_id = house_id
    house.index_image_url = image_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=u'数据库保存失败')
    return jsonify(errno=RET.OK,
                   errmsg='OK',
                   data={'url': config.QINIU_DOMIN_PREFIX + image_key})
示例#2
0
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})
示例#3
0
def save_house_image():
    """
    上传房屋的图片:
    1. 接收房屋的id 和 房屋图片文件 并进行参数校验
    2. 上传房屋的图片到七牛云
    3. 创建HouseImage对象并保存房屋图片信息
    4. 添加房屋图片信息到数据库
    5. 返回应答
    """
    # 1. 接收房屋的id 和 房屋图片文件 并进行参数校验
    house_id = request.form.get('house_id')

    if not house_id:
        return jsonify(errno=RET.PARAMERR, errmsg='缺少参数')

    file = request.files.get('house_image')

    if not file:
        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='房屋不存在')

    # 2. 上传房屋的图片到七牛云
    try:
        key = image_storage(file.read())
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='上传房屋图片失败')

    # 3. 创建HouseImage对象并保存房屋图片信息
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = key

    # 判断当前房屋是否有默认的图片,如果没有,进行添加
    if not house.index_image_url:
        house.index_image_url = key

    # 4. 添加房屋图片信息到数据库
    try:
        db.session.add(house_image)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='保存房屋图片信息失败')

    # 5. 返回应答
    img_url = constants.QINIU_DOMIN_PREFIX + key
    return jsonify(errno=RET.OK, errmsg='OK', data={'img_url': img_url})
示例#4
0
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})
示例#5
0
文件: house.py 项目: xmstu/iHome
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})
示例#6
0
文件: house.py 项目: mycyzs/iHome_pro
def upload_house_image():
    """
    用户是否登录
    获取参数并且校验
    查询房屋,只有房子存在时才上传
    调用七牛云工具上传
    把图片信息保存到house_image模型类中
    响应
    :return:
    """
    # 1.获取参数校验
    house_image = request.files.get('house_image')
    if not house_image:
        return jsonify(reeno=RET.PARAMERR, errmsg='获取图片失败')

    # 2.查询房屋信息,前端是form提交
    house_id = request.form.get('house_id')
    try:
        house = House.query.get(house_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(reeno=RET.DBERR, errmsg='查询出错')
    if not house:
        return jsonify(reeno=RET.NODATA, errmsg='房子不存在')

    # 3.调用工具上传
    try:
        key = upload_image(house_image)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(reeno=RET.PARAMERR, errmsg='上传失败')

    # 创建House_image对象,添加属性
    image = HouseImage()
    image.house_id = house_id
    image.url = key

    # 给房子添加默认的图片
    if not house.index_image_url:
        house.index_image_url = key

    # 更新数据库
    try:
        db.session.add(image)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(reeno=RET.DBERR, errmsg='图片保存失败')

    # 拼接图片的链接
    house_image_url = constants.QINIU_DOMIN_PREFIX + key

    return jsonify(reeno=RET.OK, errmsg='上传成功', data=house_image_url)
示例#7
0
文件: house.py 项目: yjn1207/iHome
def upload_house_image(house_id):
    """
    1. 取到上传的图片
    2. 进行七牛云上传
    3. 将上传返回的图片地址存储
    4. 进行返回
    :return:
    """

    # 1. 取到上传的图片
    try:
        house_image_file = request.files.get("house_image").read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数不全")


    # 2. 查询房屋是否存在
    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:
        url = storage_image(house_image_file)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR,errmsg="上传图片失败")

        # 4. 初始化房屋的图片模型
    house_image = HouseImage()
    house_image.house_id = house.id
    house_image.url = url

    # 判断是否有首页图片
    if not house.index_image_url:
        house.index_image_url=url

    # 更新到数据库
    try:
        db.session.add(house_image)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")
    return jsonify(errno=RET.OK,errmsg="OK",data={"url":QINIU_DOMIN_PREFIX +url})
示例#8
0
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})
示例#9
0
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('image_data')
    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.PARAMERR, 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
    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})
示例#10
0
def upload_house_image():
    """上传房屋图片"""

    # 1,接受参数
    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.PARAMERR, 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)
        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})
示例#11
0
文件: house.py 项目: xiaobaoxia/flask
def save_house_image():
    # 获取房屋id
    house_id = request.form['house_id']
    if not house_id:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 获取房屋图片
    try:
        image = request.files.get('house_image').read()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 上传图片
    try:
        url = storage_image(image)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='上传图片错误')
    # 查询房屋信息
    try:
        house = House.query.get(int(house_id))
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据查询错误')
    if not house:
        return jsonify(errno=RET.DATAERR, errmsg='房屋信息不存在')

    if house.index_image_url == '':
        house.index_image_url = url

    house_image = HouseImage()

    house_image.house_id = house_id
    house_image.url = url

    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='数据保存失败')

    return jsonify(errno=RET.OK, errmsg='ok', data={"url": QINIU_DOMIN_PREFIX + url})
示例#12
0
文件: house.py 项目: equalll/iHome-1
def save_house_image():
    house_id = request.form.get('house_id')
    if not house_id:
        return jsonify(errno=RET.PARAMERR, errmsg='缺少参数')

    file = request.files.get('house_image')

    if not file:
        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='房屋不存在')

    try:
        key = image_storage(file.read())
    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:
        db.session.callback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='保存房屋图片失败')

    image_url = constants.QINIU_DOMIN_PREFIX + key
    return jsonify(errno=RET.OK, errmsg='OK', data={'img_url': image_url})
示例#13
0
def newhouse_images():

    images = request.files.get('house_image')
    house_id = request.form.get('house_id')

    # 保存成功
    url = os.path.join(UPLOAD_DIRS, images.filename)
    images.save(url)

    image_url = os.path.join(os.path.join('\static', 'upload'),
                             images.filename)
    house_image = HouseImage()
    house_image.house_id = house_id
    house_image.url = image_url
    try:
        house_image.add_update()
    except:
        return jsonify(status_code.DATABASE_ERROR)

    house = House.query.get(house_id)

    if not house.index_image_url:

        house.index_image_url = image_url
        try:
            house.add_update()
        except:
            return jsonify(status_code.DATABASE_ERROR)
    return jsonify(code=status_code.OK, image_url=image_url)
示例#14
0
def save_house_image():
    """保存房屋的图片
    参数 图片 房屋的id
    """
    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:  # 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)

    # 处理房屋的主图片
    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})
示例#15
0
def save_house_image():
    """保存房屋的图片
    参数:图片,房屋ID,
    """
    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 ex:
        current_app.logger.error(ex)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if house is None:
        return jsonify(errno=RET.NODATA, errmsg="房屋不存在")

    # 保存图片到FastDFS
    try:
        file_name = upload_image_by_buffer(file_buffer=image_file)
    except Exception as ex:
        current_app.logger.error(ex)
        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 ex:
        current_app.logger.error(ex)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存图片信息异常")
    image_url = constains.FAST_DFS_URL + file_name
    return jsonify(errno=RET.OK, errmsg="OK", data={"image_url": image_url})
示例#16
0
def upload_house_image():
    user_id = g.user_id
    image_data = request.files.get("house_image")
    house_id = request.form.get("house_id")

    if not all([image_data, house_id]):
        return jsonify(errno=RET.PARAMERR, errmsg=error_map[RET.PARAMERR])

    try:
        result = upload_image(image_data.read())
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg="上传图片失败")

    house_image = HouseImage(house_id=house_id, url=result)

    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="保存图片失败")

    try:
        house = House.query.get(house_id)
        print(type(house))
        if house.index_image_url is None or house.index_image_url.strip(
        ) == '':
            try:
                house.index_image_url = constants.QINIU_URL_PREFIX + result
                db.session.add(house)
                db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
    except Exception as e:
        current_app.logger.error(e)

    return jsonify(errno=RET.OK,
                   errmsg="上传成功",
                   data=constants.QINIU_URL_PREFIX + result)
示例#17
0
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})