我创建了一个表单,将一些图像插入到blob字段中。要选择我使用的图像
<input type="file"....
我有这种形式:
<form enctype="multipart/form-data" method="post" ....
在servlet中,我使用它来“获取”上传的图像
Part immagine = request.getPart("immaginePrincipale");
但现在我有一个问题:如何确定文件是图像而不是另一个文件重命名为图像(例如file.txt重命名为file.jpg)?
//////////////////////////////// SOLUTION ////////////// ///////////////////////////////////
@sdanzig提供的代码似乎有效。
我刚刚将InputStream传递给方法createImageInputStream()
ImageInputStream iis = ageIO.createImageInputStream(myInpuStream);
Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
while (readers.hasNext()) {
ImageReader read = readers.next();
System.out.println("format name = " + read.getFormatName());
}
答案 0 :(得分:3)
您可以使用ImageReader.getFormatName()
http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageReader.html#getFormatName()
以下是一个例子:
import java.io.IOException;
import java.net.URL;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
public class Main {
public static void main(String[] args) throws IOException {
URL[] urls = { new URL("http://yourserver/small.png") };
for (URL url : urls) {
ImageInputStream iis = ImageIO.createImageInputStream(url
.openStream());
Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
System.out.println("url= " + url.getPath());
while (readers.hasNext()) {
ImageReader read = readers.next();
System.out.println("format name = " + read.getFormatName());
}
System.out.println();
}
}
}
它将返回一个字符串,如:raw,jpeg,tif,WBMP,PNM,JPG,DICOM,wbmp,JPEG,PNG,jpeg 2000,tiff,BMP,JPEG2000,RAW,jpeg2000,GIF,TIF,TIFF ,jpg,bmp,pnm,png,JPEG 2000,gif