开发者社区> 问答> 正文

JAVA 在request里取值,两次取的不一样。报错

"

我是这么在request里取得值:

TargetFile targetFile = (TargetFile) request.getAttribute(TARGET_FILE);

然后这个方法分别在一览画面和详细画面调用过两次,方法如下

public ActionForward execute(ActionMapping mapping, ActionForm aform, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        SessionValidator.getAccount(request);

        TargetFile targetFile = (TargetFile) request.getAttribute(TARGET_FILE);

        if (targetFile == null) {
            log.warn("Invalid request for FileDownloadAction");
            return mapping.findForward("error");
        }

        try {
            if (StringUtils.isBlank(targetFile.getRepositoryFileId())) {
                log.warn("Invalid request for FileDownloadAction: targetFileName is blank: " + targetFile);
                return mapping.findForward("error");
            }

            // Content-Type
            String ct = targetFile.getContentType();
            if (ct == null) {
                ct = FILEDOWNLOAD_OCTET_TYPE;
            }

            InputStream in = targetFile.getInputStream(); // possibly exception, but never null.
            File file = File.createTempFile("dnload", null);
            try {
                FileUtil.copyFileFromInputStream(in, file);
                String uaStr = request.getHeader("User-Agent");
                if (StringUtils.contains(uaStr, "iPhone") || StringUtils.contains(uaStr, "iPad")) {
                    downFileFromIpadOrIphone(ct, file, targetFile.getOriginalFilename(), request, response);
                } else {
                    downFile(ct, file, targetFile.getOriginalFilename(), request, response);
                }
            } catch (FileNotFoundException e) {
                log.error(String.format("TargetFile %s not found", targetFile.getRepositoryFileId()));
            } finally {
                file.delete();
            }
        } finally {
            //@since 4.0.2
            targetFile.closeInputStreamQuietly();
        }

        return null;
    }

问题来了,在一览画面:

在详细画面:

在详细画面那个originalFilename为什么是空啊?

"

展开
收起
因为相信,所以看见。 2020-05-27 12:59:24 1005 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    stream,读一次就空了啊。就像袋子里有个苹果,你拿出来袋子就空了。要么把你读出来的stream set回去,要么把你读出来的stream作为参数传递,不能多次读stream。

    2020-05-27 16:23:38
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载