Java文件上传-输入流问题

eyh26e7m  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(155)

我必须从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();
            }
q3qa4bjr

q3qa4bjr1#

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

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

FileUtils.writeByteArrayToFile(loOutput, fileArray);

FileUtils由apache-commons提供

相关问题