Làm thế nào xác thực file ảnh trong java

Chuỗi xác thực file ảnh

([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

Description

(                         #Start of the group #1
[^\s]+                    #  must contains one or more anything (except white space)
(                #    start of the group #2
         \.               #        follow by a dot "."
(?i)             #        ignore the case sensive checking for the following characters
(                #          start of the group #3
              jpg #            contains characters "jpg"
|                #        ..or
              png #            contains characters "png"
|                #        ..or
              gif #            contains characters "gif"
|                #        ..or
              bmp #            contains characters "bmp"
)                #          end of the group #3
)                #     end of the group #2 
  $                       #  end of the string
)                         #end of the group #1

Code:

package com.codewr.javacore.regular.expression;

 

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

/**

 *

 * @author codewr

 */

public class ImageValidator {

 

    private static final String IMAGE_PATTERN

            = "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";

 

    public static void main(String[] args) {

        ImageValidator imageValidator = new ImageValidator();

        //check  image validate

        boolean isValid = imageValidator.validate("a.pnsg");

        System.out.println("image valid is " + isValid);

    }

 

    /**

     * Validate image with regular expression

     *

     * @param image image for validation

     * @return true valid image, false image email

     */

    public boolean validate(final String image) {

        Pattern pattern = Pattern.compile(IMAGE_PATTERN);

        Matcher matcher = pattern.matcher(image);

        return matcher.matches();

 

    }

}

Code UnitTest:

File ảnh hợp lệ

1. “a.jpg”, “a.gif”,”a.png”, “a.bmp”,
2. “..jpg”, “..gif”,”..png”, “..bmp”,
3. “a.JPG”, “a.GIF”,”a.PNG”, “a.BMP”,
4. “a.JpG”, “a.GiF”,”a.PnG”, “a.BmP”,
5. “jpg.jpg”, “gif.gif”,”png.png”, “bmp.bmp”

File ảnh không hợp lệ:

1. “.jpg”, “.gif”,”.png”,”.bmp” – image file name is required
2. ” .jpg”, ” .gif”,” .png”,” .bmp” – White space is not allow in first character
3. “a.txt”, “a.exe”,”a.”,”a.mp3″ – Only image file extension is allow
3. “jpg”, “gif”,”png”,”bmp” – image file extension is required

import com.codewr.javacore.regular.expression.ImageValidator;

import org.testng.Assert;

import org.testng.annotations.*;

/**

 *

 * @author codewr

 */

public class ImageValidatorTest {

 

    private ImageValidator imageValidator;

 

    @BeforeClass

    public void initData() {

        imageValidator = new ImageValidator();

    }

 

    @DataProvider

    public Object[][] ValidImageProvider() {

        return new Object[][]{

            {new String[]{

                "a.jpg", "a.gif", "a.png", "a.bmp",

                "..jpg", "..gif", "..png", "..bmp",

                "a.JPG", "a.GIF", "a.PNG", "a.BMP",

                "a.JpG", "a.GiF", "a.PnG", "a.BmP",

                "jpg.jpg", "gif.gif", "png.png", "bmp.bmp"

            }

            }

        };

    }

 

    @DataProvider

    public Object[][] InvalidImageProvider() {

        return new Object[][]{

            {new String[]{

                ".jpg", ".gif", ".png", ".bmp",

                " .jpg", " .gif", " .png", " .bmp",

                "a.txt", "a.exe", "a.", "a.mp3",

                "jpg", "gif", "png", "bmp"

            }

            }

        };

    }

 

    @Test(dataProvider = "ValidImageProvider")

    public void ValidImageTest(String[] Image) {

 

        for (String temp : Image) {

            boolean valid = imageValidator.validate(temp);

            System.out.println("Image is valid : " + temp + " , " + valid);

            Assert.assertEquals(true, valid);

        }

 

    }

 

    @Test(dataProvider = "InvalidImageProvider",

            dependsOnMethods = "ValidImageTest")

    public void InValidImageTest(String[] Image) {

 

        for (String temp : Image) {

            boolean valid = imageValidator.validate(temp);

            System.out.println("Image is valid : " + temp + " , " + valid);

            Assert.assertEquals(false, valid);

        }

    }

 

}

Output:

Running ImageValidatorTest

Image is valid : a.jpg , true

Image is valid : a.gif , true

Image is valid : a.png , true

Image is valid : a.bmp , true

Image is valid : ..jpg , true

Image is valid : ..gif , true

Image is valid : ..png , true

Image is valid : ..bmp , true

Image is valid : a.JPG , true

Image is valid : a.GIF , true

Image is valid : a.PNG , true

Image is valid : a.BMP , true

Image is valid : a.JpG , true

Image is valid : a.GiF , true

Image is valid : a.PnG , true

Image is valid : a.BmP , true

Image is valid : jpg.jpg , true

Image is valid : gif.gif , true

Image is valid : png.png , true

Image is valid : bmp.bmp , true

Image is valid : .jpg , false

Image is valid : .gif , false

Image is valid : .png , false

Image is valid : .bmp , false

Image is valid :  .jpg , false

Image is valid :  .gif , false

Image is valid :  .png , false

Image is valid :  .bmp , false

Image is valid : a.txt , false

Image is valid : a.exe , false

Image is valid : a. , false

Image is valid : a.mp3 , false

Image is valid : jpg , false

Image is valid : gif , false

Image is valid : png , false

Image is valid : bmp , false

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.444 sec

 

Results :

 

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

Chú ý: file pom.xml add maven

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.8</version>

<scope>test</scope>

</dependency>