0

同じ入力ストリームを読み取るときに、jspページからいくつかのファイルをアップロードする必要があります。有効なファイルであるかどうかを確認しています。使用jmimemagic しているので、入力ストリームを引数として取り、アップロードしようとすると、1バイトのデータしかアップロードしませんか?

私はinputstreamにいくつかの問題があるように感じます解決策pls?

 //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 に答える