2011-07-10 12 views
10

muszę przesłać zdjęcia z kilkoma warunkami:Jak sprawdzić poprawność przesyłania zdjęć w PlayFramework 1?

  • wymiary nie mogą przekraczać x pikseli wysokości, y pikseli szerokości,
  • rozmiar nie może przekraczać b bajtów na dysku
  • musi być PNG lub JPG plik
  • musi zostać „przeskalowany”
  • musi być zapisany na dysku (przy użyciu spektaklu Blob)

Na razie nie znalazłem zbyt wielu informacji na temat przesyłania zdjęć i/lub czekania na Play! Framework. Każda pomoc jest mile widziany!

Dzięki!

Odpowiedz

13

Po wyszukaniu trochę w PlayFramework użytkownika kod źródłowy, natknąłem się na 01Bibrary już używane w Play. Nie mogę zrozumieć, dlaczego takie proste kontrole nie zostały dodane do biblioteki rdzenia ...

Oto część sprawdzenie, jakie tworzy się na:

  • Sprawdzenie wymiarów,
  • typ kontroli,
  • kontrola rozmiaru.

    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; 
    } 
    

    }

1

Wdrożenie czek niestandardową, oto próbka z dokumentacją Play:

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); 
     } 

    } 
} 

A oto link do wielkiego postu z Lunatech na przesyłanie plików z Play: http://www.lunatech-research.com/playframework-file-upload-blob

+0

Widziałem oba posty. Zanim to zrobię, przeprowadziłem trochę badań, wiesz. ;) Dodatkowo, moje pytanie jest wyraźnie zorientowane na walidację przesyłania obrazu "image" i żadne z tych dwóch, w żaden sposób nie odpowiada na moje pytanie. –

Powiązane problemy