我正在尝试在OpenShift服务器数据目录(OPENSHIFT_DATA_DIR)中上传excel文件,并将数据存储在OpenShift提供的MySQL数据库中。我遵循以下步骤:
我可以使用以下代码将excel文件上传到OPENSHIFT_DATA_DIR。我使用Spring的多部分解析器
private void uploadExcelFile(MultipartFile file) throws IOException{
String fileNameWithPath = System.getenv("OPENSHIFT_DATA_DIR")+"Test.xls";
file.transferTo(new File(fileNameWithPath));
//Start reading the excel file from OPENSHIFT_DATA_DIR
.......
.......
}
我将能够从OPENSHIFT_DATA_DIR读取excel文件,但我担心的是在阅读excel时我不确定文件是否已完全上传。
一次" transferTo()"方法执行后我可以确认文件已完全上传吗?
或者,如果文件未完全上传,我将如何处理?
答案 0 :(得分:2)
在transferTo()
mothod调用之后,您可以使用传输的文件执行任何操作。
如果您阅读了transferTo()
方法的文档,您会看到,它不是异步的。
void transferTo(File dest) throws IOException, IllegalStateException
将接收的文件传输到给定的目标文件。 这可以在文件系统中移动文件,在文件系统中复制文件,或将内存保存的内容保存到目标文件。如果目标文件已存在,则将首先将其删除。
如果文件已在文件系统中移动,则无法再次调用此操作。因此,只需调用此方法一次即可使用任何存储机制。
注意:使用Servlet 3.0多部分支持时,您需要配置相对于哪些文件将被复制的位置,如Part.write(java.lang.String)中所述。
参数: dest - 目标文件 抛出: IOException - 在读取或写入错误的情况下 IllegalStateException - 如果文件已经在文件系统中移动,并且不再可用于另一次传输