示例#1
0
 def post(self, request):
     # 1.接收参数
     avatar = request.FILES.get('avatar')
     if not avatar:
         return http.JsonResponse({'errno': RET.PARAMERR, 'errmsg': '参数错误'})
     if not image_file(avatar):
         return http.JsonResponse({'errno': RET.PARAMERR, 'errmsg': '参数错误'})
     # 读取出文件对象的二进制数据
     file_data = avatar.read()
     #
     try:
         key = storage(file_data)
     except Exception as e:
         logger.error(e)
         return http.JsonResponse({
             'errno': RET.SERVERERR,
             'errmsg': '图片保存失败'
         })
     try:
         request.user.avatar = key
         request.user.save()
     except DatabaseError as e:
         logger.error(e)
         return http.JsonResponse({
             'errno': RET.SERVERERR,
             'errmsg': '图片保存失败'
         })
     data = {'avatar_url': settings.QINIU_URL + key}
     print(data)
     return http.JsonResponse({
         'errno': RET.OK,
         'errmsg': '头像上传成功',
         'data': data
     })
示例#2
0
    def post(self, request, house_id):
        # 获取数据
        image = request.FILES.get('house_image')
        if not image:
            # 若是没有上传图片
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})
        # 验证上传的文件是否是图片
        if not image_file(image):
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})

        # 验证房屋是否存在
        try:
            house = House.objects.get(id=house_id)
        except DatabaseError as e:
            logger.error(e)
            return http.JsonResponse({"errno": RET.NODATA, "errmsg": "该房间不存在"})

        file_data = image.read()
        # 验证通过 上传文件到七牛云
        try:
            key = storage(file_data)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({
                "errno": RET.THIRDERR,
                "errmsg": "上传图片失败"
            })

        # 保存图片到数据库 需要操作的数据库有 house 保存房屋的 主图片 以及 房屋图片 因为操作两个数据库所以使用 事务
        with transaction.atomic():
            save_id = transaction.savepoint()
            try:
                # 判断 house中的 主图片是否有 没有的话,则添加
                if not house.index_image_url:
                    house.index_image_url = key
                    house.save()
                house_image = HouseImage(house=house, url=key)
                house_image.save()
            except Exception as e:
                logger.error(e)
                transaction.savepoint_rollback(save_id)
                return http.JsonResponse({
                    "errno": RET.THIRDERR,
                    "errmsg": "上传图片失败"
                })
            else:
                transaction.savepoint_commit(save_id)

        data = {"url": settings.QINIU_URL + key}
        return http.JsonResponse({
            "errno": RET.OK,
            "errmsg": "图片上传成功",
            "data": data
        })
示例#3
0
    def post(self, request, house_id):
        house_image = request.FILES.get("house_image")

        if not house_image:
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})

        if not image_file(house_image):
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})

        try:
            house = House.objects.get(id=house_id)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({"errno": RET.NODATA, "errmsg": "该房间不存在"})

        # 读取出文件对象的二进制数据
        house_image_data = house_image.read()
        #
        try:
            # TODO:没有做异步处理
            key = storage(house_image_data)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({
                "errno": RET.THIRDERR,
                "errmsg": "上传图片失败"
            })
        with transaction.atomic():
            save_id = transaction.savepoint()
            try:
                if not house.index_image_url:
                    house.index_image_url = key
                    house.save()

                house_image = HouseImage()
                house_image.house = house
                house_image.url = key
                house_image.save()
            except Exception as e:
                logger.error(e)
                transaction.savepoint_rollback(save_id)

            transaction.savepoint_commit(save_id)

        data = {"url": settings.QINIU_URL + key}
        return http.JsonResponse({
            "errno": RET.OK,
            "errmsg": "OK",
            "data": data
        })
示例#4
0
    def post(self, request):
        # 1、接收参数
        avatar = request.FILES.get("avatar")

        if not avatar:
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})

        if not image_file(avatar):
            return http.JsonResponse({"errno": RET.PARAMERR, "errmsg": "参数错误"})

        # 读取出文件对象的二进制数据
        file_data = avatar.read()
        #
        try:
            key = storage(file_data)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({
                "errno": RET.THIRDERR,
                "errmsg": "上传图片失败"
            })

        try:
            request.user.avatar = key
            request.user.save()
        except DatabaseError as e:
            logger.error(e)
            return http.JsonResponse({
                "errno": RET.SERVERERR,
                "errmsg": "图片保存失败"
            })

        data = {"avatar_url": settings.QINIU_URL + key}
        return http.JsonResponse({
            "errno": RET.OK,
            "errmsg": "OK",
            "data": data
        })
示例#5
0
    def post(self, request, house_id):
        house_image = request.FILES.get('house_image')
        if not house_image:
            return http.JsonResponse({'errno': RET.PARAMERR, 'errmsg': '参数错误'})
        if not image_file(house_image):
            return http.JsonResponse({'errno': RET.PARAMERR, 'errmsg': '参数错误'})
        try:
            house = House.objects.get(id=house_id)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({'errno': RET.NODATA, 'errmsg': '房间不存在'})
        # 读取文件的二进制数据
        house_image_data = house_image.read()
        try:
            key = storage(house_image_data)
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({'errno': RET.THIRDERR, 'errmsg': '图片上传失败'})
        with transaction.atomic():
            save_id = transaction.savepoint()
            try:
                if not house.index_image_url:
                    house.index_image_url = key
                    house.save()
                house_image = HouseImage()
                house_image.house = house
                house_image.url = key
                house_image.save()
            except Exception as e:
                logger.error(e)
                transaction.savepoint_rollback(save_id)
            transaction.savepoint_commit(save_id)

        data = {
            'url': settings.QINIU_URL + key
        }
        return http.JsonResponse({'errno': RET.OK, 'errmsg': 'OK', 'data': data})