【问题标题】:Java file upload - inputstream issueJava文件上传 - 输入流问题
【发布时间】:2012-04-17 09:48:32
【问题描述】:

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

【问题讨论】:

  • 能否请您提供您正在使用的代码,以便我们查看?没有任何错误消息或代码很难诊断。
  • 在这两种情况下,相同的流被用于执行操作

标签: java file-upload


【解决方案1】:

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

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

FileUtils.writeByteArrayToFile(loOutput, fileArray);

FileUtils 由 apache-commons 提供

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2013-03-07
    • 2017-04-20
    • 1970-01-01
    • 2013-12-15
    • 2013-04-22
    相关资源
    最近更新 更多