我已經成功上傳的文件在Struts2用下面的代碼:Struts2的文件上傳和保存
String filePath = servletRequest.getSession().getServletContext().getRealPath("/") + "WEB-INF\\files\\";
fileToCreate = new File(filePath, getUserDocFileName());
FileUtils.copyFile(this.userDoc, fileToCreate);
的問題是,該文件被複制到\編譯\網絡\ WEB-INF \文件夾中。現在,當我嘗試使用結果類型的流來檢索文件:
String filePath = servletRequest.getSession().getServletContext().getRealPath("/") + "WEB-INF\\files\\";
File file = new File(filePath + getFileName());
try {
inputStream = new DataInputStream(new FileInputStream(file));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
<action name="loadFile" class="com.app.Controller" method="loadFile">
<result name="success" type="stream">
<param name="contentType">${fileType}</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">inline;filename="${fileName}"</param>
<param name="bufferSize">1024</param>
</result>
<interceptor-ref name="defaultStack"/>
</action>
我得到以下異常:
java.lang.IllegalArgumentException: Can not find a java.io.InputStream with the name [inputStream] in the invocation stack. Check the <param name="inputName"> tag specified for this action.
關於這個問題的任何幫助嗎?
是FileUtils.copyFile
方法與設置struts.multipart.saveDir
屬性相同嗎?
如何將文件放置在WEB-INF文件夾中但不在生成文件夾中?
當我再次構建項目時,不應刪除文件。我想稍後將它部署到OpenShift。
您可以指定比'WEB-INF'等其他位置得到它? –
@RomanC我希望文件不能從任何地方訪問。這就是爲什麼我把它們放在WEB-INF下。如果這些文件可以在外部安全,那麼我會這樣做 – user2589197
我認爲你錯了,它可以從任何地方訪問文件訪問權限,但不受應用程序訪問權限的限制。 –