我不得不用几个条件上传图片:如何验证PlayFramework 1中的图片上传?
- 尺寸不能超过x像素高度,Y像素宽度,
- 大小不能超过在磁盘上
- b字节必须是一个PNG或JPG文件
- 必须被“调整”
- 必须被保存到磁盘(使用剧中的BLOB)
很远,我发现很少或没有关于图像上传和/或检查Play!Framework的信息。 欢迎任何帮助!
谢谢!
我不得不用几个条件上传图片:如何验证PlayFramework 1中的图片上传?
很远,我发现很少或没有关于图像上传和/或检查Play!Framework的信息。 欢迎任何帮助!
谢谢!
在PlayFramework的搜索过了一会儿源代码,我偶然发现了Play中已经使用的ImageIO库。无法理解,为什么这种简单的检查还没有被添加到核心库...
下面是检查的一部分,我为创建:
尺寸检查。
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;
}
}
实现自定义的检查,这里是从播放的文件样本:
public class User {
@Required
@CheckWith(MyPasswordCheck.class)
public String password;
static class MyPasswordCheck extends Check {
public boolean isSatisfied(Object user, Object password) {
return notMatchPreviousPasswords(password);
}
}
}
这里对伟大的职位从Lunatech在文件上传与播放的链接: http://www.lunatech-research.com/playframework-file-upload-blob
我已经看到了这两个职位。在发布之前,我已经做了一些研究,你知道。 ;)另外,我的问题显然是针对“图片”上传验证,而这两者都不以任何方式回答我的问题。 –