上传图片需要满足几个条件:
- 尺寸不能超过 x 像素高度,y 像素宽度,
- 磁盘上的大小不能超过 b 个字节
- 必须是 PNG 或 JPG 文件
- 必须“调整大小”
- 必须保存到磁盘(使用 play 的 Blob)
到目前为止,我几乎没有发现有关图像上传和/或检查 Play!Framework 的信息。 欢迎任何帮助!
谢谢!
最佳答案
在 PlayFramework 的源代码中搜索了一下之后,我偶然发现了 ImageIO已经在 Play 中使用的库。无法理解,为什么没有将如此简单的检查添加到核心库中......
这是我创建的检查部分:
- 尺寸检查,
- 类型检查,
尺寸检查。
package validators; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import play.Logger; import play.data.validation.Check; import play.db.jpa.Blob; import play.i18n.Messages; public class ImageValidator extends Check { public final static int MAX_SIZE = 4048; public final static int MAX_HEIGHT = 1920; @Override public boolean isSatisfied(Object parent, Object image) { if (!(image instanceof Blob)) { return false; } if (!((Blob) image).type().equals("image/jpeg") && !((Blob) image).type().equals("image/png")) { return false; } // size check if (((Blob) image).getFile().getLength() > MAX_SIZE) { return false; } try { BufferedImage source = ImageIO.read(((Blob) image).getFile()); int width = source.getWidth(); int height = source.getHeight(); if (width > MAX_WIDTH || height > MAX_HEIGHT) { return false; } } catch (IOException exption) { return false; } return true; } }
关于java - 如何验证 Play Framework 1 中的图片上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644356/