我必须从jsp页面上传一些文件,当我读取相同的输入流时。我正在检查它的真实性,它是否是一个有效的文件,为此我使用jmimemagic
,它将输入流作为参数,现在当我试图上传它时,它只上传1字节的数据?
我觉得有一些问题与输入流有任何解决方案请?
//For checking the file type
InputStream loIns = aoFileStream.getInputStreamToReadFile();
byte[] fileArray = IOUtils.toByteArray(loIns);
mimeType = Magic.getMagicMatch(fileArray, true).getMimeType();
if(!loAllowedFileTypesMimeList.contains(mimeType)){
return false;
}else{
String lsFileName = aoFileStream.getFileName();
String lsFileExt = lsFileName.substring(lsFileName.lastIndexOf(".") + 1);
if(loAllowedFileTypesList.contains(lsFileExt.toLowerCase())){
return true;
}
return false;
}
// For uploading the content
File loOutputFile = new File(asFilePathToUpload);
if(!loOutputFile.exists()){
FileOutputStream loOutput = new FileOutputStream(loOutputFile);
while (liEnd != -1) {
liEnd = inputStreamToReadFile.read();
loOutput.write(liEnd);
}
inputStreamToReadFile.close();
loOutput.close();
}
1条答案
按热度按时间q3qa4bjr1#
在
你已经耗尽了你的输入流,所以当你想把它写入一个文件时,你应该使用
fileArray
的内容,而不是你的loIns
:FileUtils由apache-commons提供