gpt4 book ai didi

java - 流分辨率条纹

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:03 25 4
gpt4 key购买 nike

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

非常感谢

最佳答案

如果您想在上传后在页面上显示图像,则需要处理几件事。首先,“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”标记,但是,您不希望它看起来像附件。

关于java - 流分辨率条纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3593995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com