spring mvc 返回值类型设定

本文介绍了在Spring MVC中处理文件上传时,如何避免在IE7和8中出现下载提示以及解决返回值被`<pre>`标签包裹的问题。通过设置返回类型为`text/html`和调整Content-Type,确保前端正确解析。示例代码展示了两种处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个上传文件遇到的问题,在IE7和8下面会在上传完成后,弹出下载框。

查到的原因是返回值类型是json,返回头部content-type是:application/json,需要更改其返回的信息头为text/html。

还有一个问题是,返回类型是text/plain时,返回的值会被<pre></pre>标签包起来,影响前端解析。

方法一:
@RequestMapping(value = "/excelUploadtest", method = RequestMethod.POST)
    // @ResponseBody
    public void excelUploadtest(@RequestParam("file") MultipartFile file, @RequestParam("fileName") String fileName,
            HttpServletResponse response) throws IOException {

        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("{status:1,msg:'" + "恭喜您,上传成功!" + "'}");
        return;
    }

方法二:
@RequestMapping(value = "add.do")
    public ResponseEntity<?> add(HttpServletRequest request) {
    
        HttpHeaders headers = new HttpHeaders();
        MediaType mediaType = new MediaType("text", "html", Charset.forName("utf-8"));
        headers.setContentType(mediaType);
        return new ResponseEntity<Map<String, Object>>("msg", headers, HttpStatus.OK);
    }
    

@RequestMapping(value = "/excelUpload", method = RequestMethod.POST)
    public ResponseEntity<JsonMessage> excelUpload(@RequestParam("file") MultipartFile file, @RequestParam("fileName") String fileName,
            HttpServletResponse response) throws IOException {

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.TEXT_HTML);
        ResponseEntity<JsonMessage> responseEntity = new ResponseEntity<JsonMessage>(new JsonMessage("无法读取上传的Excel文件,请重试。"),headers,HttpStatus.OK);
        Workbook wb = null;
        if (fileName.endsWith(".xls")) {
            try {
                wb = new HSSFWorkbook(file.getInputStream());
            } catch (Exception e) {
                return responseEntity;
            }
        } else if (fileName.endsWith(".xlsx")) {
            try {
                wb = new XSSFWorkbook(file.getInputStream());
            } catch (Exception e) {
                return responseEntity;
            }
        } else {
            return responseEntity;
        }

        // 该工具类仅仅负责解析、数据绑定(含类型转换)

        // TODO 业务值判断(存在性判断,唯一性判断等)

        // 返回错误画面
        Integer errorCount = errorResultList.size();
        if (errorCount > 0) {
            JsonMessage jsonMessage = new JsonMessage();
            jsonMessage.setResult(errorResultList);
            jsonMessage.setErrorMsg("您有<em class='red'>" + errorCount + "</em>条错误信息,上传失败!请修改模板后继续上传");
            jsonMessage.setStatus(JsonMessage.STATUS_FAIL);
            return new ResponseEntity<JsonMessage>(jsonMessage, headers, HttpStatus.OK);
        }

        List<Medicine> medicines = BeanMapper.mapList(medicineVOs, Medicine.class);
        medicineService.batchInsertMedicines(medicines);

        JsonMessage jsonMessage = new JsonMessage();
        jsonMessage.setMsg("恭喜您,上传成功!");
        jsonMessage.setStatus(JsonMessage.STATUS_SUCCESS);
        return new ResponseEntity<JsonMessage>(jsonMessage, headers, HttpStatus.OK);
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值