【问题标题】:How to preview image without saving it to file system?(JSF 2.0)如何预览图像而不将其保存到文件系统?(JSF 2.0)
【发布时间】:2011-06-30 15:20:06
【问题描述】:

我的网络应用有一个 JSF2.0 页面,看起来或多或少像这样:

我需要先预览图片,然后再上传并保存到文件系统:

你知道有没有图书馆可以帮助我轻松做到这一点? 我目前使用 primefaces 文件上传小工具,但我不知道如何预览然后上传。

您能否给我一些关于从哪里开始的最佳实践提示,以实现我的目标。

【问题讨论】:

    标签: java image jsf file-upload java-ee-6


    【解决方案1】:

    非常复杂...理论上可行但很复杂.. 上传文件时,您应该将流(byte [])保存在用户会话中,然后为 servlet 创建 img src url,该 servlet 以先前保存的字节响应... 这就是理论……不知道有没有实现……

    【讨论】:

    • 你是对的,我不认为它是如此复杂。显然,如果您已上传文件,则不必将其保存到磁盘以在浏览器中显示。问题是他根本不想上传文件,即他希望能够在上传之前预览文件。
    • @AlexR 是的,这是正确的,我不想上传它。还有一个疑问是,如果用户计算机上的读写权限,也会使这项任务更加困难。我以前从来没有这样做过,听起来很复杂。
    • 并没有那么复杂,因此您唯一需要做的就是在 POST 中调用请求流作为字节 [] 并将字节 [] 保存在会话中,如 会话。 setAttribute("app.image.preview", bytes) 并在 GET 方法中将该属性作为响应发送,例如: response.getOutputStream().write((byte[])session.getAttribute("app .image.preview")) ...最难的部分是如果您希望在用户选择图像后立即预览...因为您需要模拟 ajax 请求来上传 img...
    【解决方案2】:

    很抱歉让您失望了,但我认为 HTML 根本不可能。浏览器允许您上传文件,但您无法获取其内容或文件系统路径。因此,解决方案是先上传文件,然后使用 AJAX 显示其预览。

    可能 Flash 或 Flex 为您提供了此功能,因此,我建议您检查这些工具。显然你可以使用 Java 小程序,但它会限制你的用户群。

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 2021-10-29
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多