【问题标题】:StreamingResolution Stripes流分辨率条纹
【发布时间】:2010-08-29 07:56:13
【问题描述】:

任何人都可以帮助我使用 java 框架 - 条纹吗? 我尝试使用stripes:file 上传图片,在服务器上调整大小并返回新的StreamingResolution return ("image / jpeg"... 我现在不知道如何使用StreamingResolution 发送以及如何在jsp 上的stripes:file 元素之后加载图像?

非常感谢

【问题讨论】:

    标签: java stripes


    【解决方案1】:

    如果您想在上传后在页面上显示图片,有几件事情需要处理。首先,“POST”必须有某种结果,而那个结果可能不会是图像数据。也就是说,让您的操作(您的“事件处理程序”,正如 Stripes 人所说的那样)返回 StreamingResolution 并没有真正的意义,除非您只是希望用户能够像下载文件一样保存图像。

    因此,您的图片上传“POST”可能只涉及转发到结果页面的普通分辨率。在该页面内,您可以放置​​一个 HTML <img> 标记,该标记将“src”设置为另一个 Stripes 操作。现在该操作将为您的图像数据返回 StreamingResolution。

    要解决的一个问题是在两个 HTML 事务中保存图像数据的位置。为此,我会使用 Stripes 的“闪光范围”,因为它非常简单。如果您的服务器代码无论如何都要将图像存储在数据库中,当然,您的图像操作 URL 将只包含某种识别信息。

    假设您可以找到图像数据,您的服务器端处理程序所要做的就是创建一个 StreamingResolution 实例,该实例具有stream() 方法的实现。这需要一个参数(HttpServletResponse)。从那里,您将使用response.getOutputStream() 打开一个输出流,将图像数据复制到该输出流,然后关闭该流。真的没什么。这是一个发送简单文件的示例,但对您而言,主要区别在于跟踪图像数据,当然还有不同的 MIME 类型:

    public Resolution image() {
        return new StreamingResolution("text/plain") {
            public void stream(final HttpServletResponse response) {
                InputStream sample = null;
                try {
                    sample = getResourceAsStream(SAMPLE + getContext().getLocale().toString());
                    if (sample == null) sample = getResourceAsStream(SAMPLE + "en_US");
    
                    final OutputStream out = response.getOutputStream();
                    final byte buffer[] = new byte[8192];
    
                    out.write((HEADER + "\n").getBytes());
    
                    for (int rc = sample.read(buffer); rc > 0; rc = sample.read(buffer))
                        out.write(buffer, 0, rc);
                }
                finally {
                    if (sample != null) try { sample.close(); } catch (IOException ioe) { }
                }
            }
        };
    }
    

    您还想在开始写出图像数据之前调用setAttachment(false);。此示例用于文件下载,因此在我的情况下,我希望它是一个附件(这是默认设置)。但是,如果您要响应由 <img> 标记生成的“GET”,则不希望它看起来像附件。

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2018-03-16
      • 2020-08-03
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多