java中上傳文件時,一直出現SyntaxError: Unexpected end of input。
這時候道友看看代碼中是不是使用了inputfile.getBytes()方式獲取文件的字節數據去把文件保存起來,這樣做文件內容少可行,但是如果文件內容比較多,可能出現問題如下警告異常:
org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException(AbstractHandlerExceptionResolver.java:208) - Resolved [org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.readFully(Ljava/io/InputStream;[B)V]
然后代碼就意外終止,出現SyntaxError: Unexpected end of input。
這里需要使用文件流multipartFile.getInputStream(),再用緩沖流讀出到具體的文件中,而不是直接用multipartFile.getBytes()。
只不過我代碼中用了multipartFile.getInputStream(),又出現了另外一個問題:java.io.IOException: Stream Closed。
我的部分代碼如下圖:

代碼中有對文件校驗的處理,創建了Workbook wb = WorkbookFactory.create(is);
這段校驗之后,獲取到的流(上圖的is)就會被代碼關閉,下面在使用is進行讀取文件信息保存時就會出現問題了。
如果道友不存在上圖的校驗,那應該也有其他的文件處理(還不是上傳保存文件的處理),這個時候
這個時候我們需要給下方文件處理的地方單獨一個新的文件流(上圖中的is2),這樣問題就會解決了。
浙公網安備 33010602011771號