我不得不用幾個條件上傳圖片:如何驗證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
我已經看到了這兩個職位。在發佈之前,我已經做了一些研究,你知道。 ;)另外,我的問題顯然是針對「圖片」上傳驗證,而這兩者都不以任何方式回答我的問題。 –