upload组件上传及后台接收

前端


  上传录入的数据

data中定义变量

        path:this.$path + 'resources/deviceInfo/',
        headers:{"Authorization":"JWT " + localStorage.getItem("token")},  // upload组件的请求头携带token 

后台:

class DeviceInfoViewSet(ModelViewSet):
    """"设备信息增删改查"""
    serializer_class = DeviceInfoSerializer
    queryset = DeviceInfo.objects.filter(Is_delete=1).order_by("id")  # 查询使用了多线程,此排序就没用了

    isExists = os.path.exists(os.path.dirname(os.path.realpath(__file__)) + "/excel")
    if not isExists:
        # 如果不存在则创建目录
        os.makedirs(os.path.dirname(os.path.realpath(__file__)) + "/excel/")

    def create(self, request, *args, **kwargs):
        # excel上传设备信息解析录入
        # serializer = self.get_serializer(data=request.data)
        # serializer.is_valid(raise_exception=True)
        # self.perform_create(serializer)
        # headers = self.get_success_headers(serializer.data)
        # print(2)
        # logger_resource.info(request.data)
        # print(3)
        # return Response(serializer.data, headers=headers)
        try:
            data = request.data.get("file")
            print("hello")
            # 1,写入上传的excel文件至指定的服务器路径
            with open(os.path.dirname(os.path.realpath(__file__)) + "/excel/" + data.name, 'wb') as f:
                for chunk in data.chunks():
                    f.write(chunk)
            # 2,解析上传的excel文件数据,存入数据库
            # 打开已有xlsx文件
            wb = load_workbook(os.path.dirname(os.path.realpath(__file__)) + "/excel/" + data.name)
            # 获得所有sheet的名称
            sheet_names = wb.get_sheet_names()
            # 根据sheet名字获得sheet
            sheet = wb.get_sheet_by_name(sheet_names[0])
            # 获取最大行,for循环取值进行存储
            max_row = sheet.max_row
            # TODO
            list_obj = []
            for i in range(2, (max_row + 1)):
                Di_name = sheet["A%d" % i].value  # 设备名称
                Di_type = sheet["B%d" % i].value  # 设备类型
                Di_version = sheet["C%d" % i].value  # 设备规格
                Di_firm = sheet["D%d" % i].value  # 设备厂商
                Di_address = sheet["E%d" % i].value  # 使用地点
                Di_range = sheet["F%d" % i].value  # 设备量程
                Di_num = sheet["G%d" % i].value  # 设备编号
                Di_SN = sheet["H%d" % i].value  # 设备出厂编号
                Check_number = sheet["I%d" % i].value  # 仪校编号
                Di_assets_nature = sheet["J%d" % i].value  # 资产性质
                Di_assets_id = sheet["K%d" % i].value  # 资产编号
                Di_column_id = sheet["M%d" % i].value  # 列管编号
                Di_use_id = sheet["M%d" % i].value  # 使用编号
                Di_dep = sheet["N%d" % i].value  # 设备所属部门
                Di_passage_num = sheet["O%d" % i].value  # 通道数量
                Di_status = sheet["P%d" % i].value  # 设备状态
                Di_is_accept = sheet["Q%d" % i].value  # 是否验收
                Accept_number = sheet["R%d" % i].value  # 验收单号
                Godown_number = sheet["S%d" % i].value  # 入库单号
                Di_temperature_max = sheet["T%d" % i].value  # 最高温度
                Di_temperature_min = sheet["U%d" % i].value  # 最低温度
                Di_accept_time = sheet["V%d" % i].value  # 验收时间
                Di_buy_time = sheet["W%d" % i].value  # 购买时间
                Di_Asset_manager = sheet["X%d" % i].value  # 资产管理员工号
                versions = sheet["Y%d" % i].value  # 版本
                address = sheet["H%d" % i].value  # 通讯
                list_obj.append(DeviceInfo(Di_name=Di_name,
                                           Di_type=Di_type,
                                            Di_version=Di_version,
                                            Di_firm=Di_firm,
                                            Di_address=Di_address,
                                            Di_range=Di_range,
                                            Di_num=Di_num,
                                            Di_SN=Di_SN,
                                            Check_number=Check_number,
                                            Di_assets_nature=Di_assets_nature,
                                            Di_assets_id=Di_assets_id,
                                            Di_column_id=Di_column_id,
                                            Di_use_id=Di_use_id,
                                            Di_dep=Di_dep,
                                            Di_passage_num=Di_passage_num,
                                            Di_status=Di_status,
                                            Di_is_accept=Di_is_accept,
                                            Accept_number=Accept_number,
                                            Godown_number=Godown_number,
                                            Di_temperature_max=Di_temperature_max,
                                            Di_temperature_min=Di_temperature_min,
                                            Di_accept_time=Di_accept_time,
                                            Di_buy_time=Di_buy_time,
                                            Di_Asset_manager=Di_Asset_manager,
                                            versions=versions,
                                            address=address
                                            ))
            DeviceInfo.objects.bulk_create(list_obj)
            # 删除上传的文件
            # os.remove(os.path.dirname(os.path.realpath(__file__)) + "/excel/" + data.name)
            return ReturnData(message="设备信息录入成功")

你可能感兴趣的:(upload组件上传及后台接收)