我有一个网页的上传功能,让你上传一个excel文件,点击上传一个Ajax调用被触发。从这里我得到FileItem输入流,并使用fileItem.getInputStream()方法,我有另一个类,它有一个方法,需要将文件传递给它,它有一个FileInputStream参数。因此,我的问题是如何将输入流转换为FileInputStream
一个详细的解决方案将不胜感激,因为我是一个初级开发人员,所以我仍然在学习。
非常感谢。
发布于 2017-02-03 12:34:10
发布于 2017-02-03 12:37:16
如果您使用的是org.apache.commons.fileupload.FileItem接口,那么您的类可能是DefaultFileItem,它是DiskFileItem的一个子类。所以您可以将FileItem转换为DiskFileItem。然后,如果您查看DiskFileItem源代码,您会发现getInputStream()实际上正在返回一个FileInputStream或ByteArrayInputStream,如果您从DiskFileItem获得一个FileInputStream,您可以直接将它传递给您的另一个类。但是,如果得到一个ByteArrayInputStream,则必须将内容写入自己的临时文件,然后在这个临时文件上打开另一个FileInputStream。还有另一个方法DiskFileItem.getStoreLocation(),它似乎返回用于上传的服务器端文件,但是如果文件缓存在内存中,它可能返回null。
总之:您不能确定会有一个服务器端文件,因为上传可能被缓存在内存中。因此,如果您在其他地方需要一个FileInputStream,您必须自己创建一个临时文件。有一个关于如何在两个流这里之间进行管道的示例。
发布于 2022-07-31 17:02:51
//将文件路径/名称直接传递给FileInputStream
FileInputStream input1 = new FileInputStream("input.txt");//Save文件路径已由用户传入到字符串变量中。
String fileName = args[0];//传递路径到文件对象
File inputFile = new File(fileName);//将文件对象传递给FileOutputStream
FileOutputStream output = new FileOutputStream(inputFile);https://stackoverflow.com/questions/42024155
复制相似问题