接口调用成功,为什么还报404


fileChange() {

      const file = document.getElementById('file').files[0];
      const formData = new FormData();
      formData.append('file', file);
        const timeoutPromise = new Promise((resolve, reject) => {
            setTimeout(() => {
                reject(new Error('请求超时'));
            }, '9999999'); // 设置超时时间
        });
        const requestPromise = fetch('/api/readData/importMeterData', {
            method: 'post',
            body: formData
        });
      Promise.race([requestPromise, timeoutPromise])
          .then(response => {
              document.getElementById('file').value = '';
              console.log(response)
              if (response === 'SUCCESS'){
                  this.$message.success('导入成功');
              }else {
                  this.$message.error('导入失败');
              }
              this.loading = false;

          })
          .catch(error => {
            document.getElementById('file').value = '';
              console.log("77777777777")
              this.$message.error('导入失败');
              this.loading = false;
          });
    },

 @RequestMapping(value ="/importMeterData", method = RequestMethod.POST)
    public String importAllTerminalAttribute(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
        XSSFWorkbook wk = null;

        try {
            wk = new XSSFWorkbook(file.getInputStream());
            Integer[] selectBaseCol = new Integer[]{0, 4, 5};
            String[] selectBaseColName = new String[]{"meterBarcode", "freezingTime", "phaseType"};
            int curCol = 8, curStep = 4, sumCur = 24;
            String pattern = "yyyy-MM-dd HH:mm:ss";
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            XSSFSheet sheet = wk.getSheetAt(0);
            int size = sheet.getLastRowNum();
            List<MeterData> list = new ArrayList<>();
            for (int rowNum = 1; rowNum < size + 1; rowNum++) {
                Row row = sheet.getRow(rowNum);

                JSONObject json = new JSONObject();
                for (int i = 0; i < selectBaseCol.length; i++) {
                    Cell cell = row.getCell(selectBaseCol[i]);
                    cell.setCellType(CellType.STRING);
                    json.put(selectBaseColName[i], cell.getStringCellValue());
                }

                for (int i = 0; i < sumCur; i++) {
                    MeterData meterData = JSONObject.toJavaObject(json, MeterData.class);
                    UUID uuid = UUID.randomUUID();
                    long mostSigBits = uuid.getMostSignificantBits();
                    long leastSigBits = uuid.getLeastSignificantBits();
                    long longUUID = mostSigBits ^ leastSigBits;

                    meterData.setId(longUUID);
                    Cell cell = row.getCell(i * curStep + curCol);
                    cell.setCellType(CellType.STRING);
                    String val = cell.getStringCellValue();
                    if (val.contains("\\N")) {
                        meterData.setCurrent(null);
                    } else {
                        meterData.setCurrent(val);
                    }
                    meterData.setFreezingTime(operateDate(meterData.getFreezingTime(), pattern, "HOUR", i));

                    //字母转换
                    String phType = meterData.getPhaseType();
                    String newPhType = "";
                    switch (phType) {
                        case "1":
                            newPhType = "A";
                            break;
                        case "2":
                            newPhType = "B";
                            break;
                        case "3":
                            newPhType = "C";
                            break;
                    }
                    meterData.setPhaseType(newPhType);
                    meterData.setSaveTime(sdf.format(new Date()));

                    list.add(meterData);
                }

                for (MeterData meterData : list) {
                    List<MeterData> existCount = meterDataRepository.findRepeatu(meterData.getMeterBarcode(), meterData.getFreezingTime(),meterData.getPhaseType());
                    if (existCount.size() > 0) {
                        for (MeterData data : existCount) {
                            meterDataRepository.deleteById(data.getId());
                        }
                    }
                    meterDataRepository.save(meterData);
                }
            }
            return "SUCCESS";
        } catch (Exception e) {
            System.out.printf("导入出错:{}" + e.getMessage());
            return "ERROR";
        } finally {
            if (wk != null) {
                wk.close();
            }
            return "SUCCESS";
        }
    }

功能是导入,上述分别是,前端方法和后端方法,为什么数据都已经导入到数据库了,前端还是报404

img

看下总共请求了几次,如果配置了跨越,是会请求两次的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7747975
  • 这篇博客也不错, 你可以看下微信小程序图片链接加入正常,控制台报404错误解决方案
  • 除此之外, 这篇博客: 当图片404时显示默认图片中的 当图片404时显示默认图片 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、当图片未找到时或者404时,触发onerror显示其中的图片

    eg:

    	<img src="当前图片的地址" onerror="this.src='默认图片的地址'">
    

    2、当当前的图片未找到时,会显示默认的图片,但若是默认的图片也未找到,会引起崩溃,所以写成以下形式,这样即便默认的图片也没有找到时,会显示破裂图标。
    eg:

    	<img src="当前图片的地址" onerror="this.onerror=''; this.src='默认图片的地址'">
    

    3、在Vue中可以写成:

    	<div>
    		<img :src="pic" :onerror="img404">
    	</div>
    	<script>
    		export default {
    			data() {
    				return {
    					pic: '当前图片的地址',
    					img404: "this.onerror=''; this.src='" + require('默认的图片地址') + "'"
    				}
    			}
    		}
    	</script>
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^