0

当我读取相同的输入流时,我必须从 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();
            }
4

1 回答 1

2

 byte[] fileArray = IOUtils.toByteArray(loIns);

你已经用尽了你的输入流,所以当你想把它写入一个文件时,你应该使用的内容,而fileArray不是你的loIns

FileUtils.writeByteArrayToFile(loOutput, fileArray);

FileUtils 由 apache-commons 提供

于 2012-04-17T10:38:55.227 回答