我在Tomcat服务器上托管一个网站。该应用程序使用Struts 1.1和Spring进行所有操作。我有一个页面用于将文件上传到服务器。 当用户上传任何文件时,它已成功上传,但在尝试检索时出现404错误。我使用SSH登录检查了文件,上传的文件存在于该位置。过去4天我对此问题感到头疼,但没有解决方案。它在我的本地机器上正常工作没有任何问题。部署中的问题。
重要说明:从SSH登录,如果我尝试将该文件移动到其他位置,然后将其放回原来的位置,我可以检索文件.. !!!我不知道为什么,但我不能为用户上传的每个文件执行此操作。所以我修改了我的代码,以便首先将文件上传到临时位置,然后将其移动到正确的位置。但即使这样也行不通。
FileOutputStream outputStream = null;
FormFile formFile = null;
String tempFilePath = getServlet().getServletContext()
.getRealPath("/")
+ "uploads"
+ System.getProperty("file.separator") + "temp";
try
{
formFile = uploadForm.getFile();
boolean errorflag = false;
if(formFile.getFileSize() > 10660000)
{
request.setAttribute("error",
"File size cannot exceed 10MB!");
errorflag = true;
}
else
{
errorflag = validateFileUpload(request,
formFile, errorflag);
}
if(errorflag)
{
return gotoKnowledgeSharingPage(mapping,
request, actionHelper, session, userid,
instid);
}
File folder = new File(tempFilePath);
if(!folder.exists())
{
folder.mkdir();
}
outputStream = new FileOutputStream(new File(
tempFilePath, formFile.getFileName()));
outputStream.write(formFile.getFileData());
}
finally
{
if(outputStream != null)
{
outputStream.flush();
outputStream.close();
}
}
String finalFilePath = getServlet().getServletContext()
.getRealPath("/")
+ "uploads"
+ System.getProperty("file.separator")
+ session.getAttribute("userid");
//+ System.getProperty("file.separator")
// + formFile.getFileName();
File oldPath = new File(tempFilePath
+ System.getProperty("file.separator")
+ formFile.getFileName());
// Move file to new directory
File newPath = new File(finalFilePath);
if(!newPath.exists())
{
newPath.mkdir();
}
boolean success = oldPath.renameTo(new File(
finalFilePath, formFile.getFileName()));
if(success)
{
actionHelper.insertIntoUploadTable(userid,
knowledgeForm, formFile.getFileName());
}
else
{
if(oldPath.exists())
{
oldPath.delete();
}
}