Java 无法从服务器打开我上传的文件?
我在Tomcat服务器上托管一个网站。应用程序的所有操作都使用Struts 1.1和Spring。我有一个用于将文件上载到服务器的页面。 当用户上传任何文件时,它会被成功上传,但在尝试检索时会出现404错误。我使用SSH登录检查了文件,上传的文件就在那个位置。在过去的4天里,我一直在为这个问题挠头,但没有解决办法。它工作正常,在我的本地机器上没有任何问题。部署中存在的问题 一个重要的注意事项:从SSH登录,如果我尝试将该文件移动到其他位置,然后将其放回原始位置,我可以检索该文件。。!!!我不知道为什么,但我不能对用户上传的每个文件都这样做。因此,我修改了我的代码,以便首先将文件上载到临时位置,然后将其移动到正确的位置。但即使这样也行不通Java 无法从服务器打开我上传的文件?,java,servlets,file-io,Java,Servlets,File Io,我在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();
}
}
发生此错误时,您在Tomcat日志中看到了什么?上载操作后,上载的文件是否具有正确的读取/执行权限?没有错误。文件已成功上载。我甚至可以从SSH登录中看到文件。我无法从URL下载它们。@Souvlaki:嗨。我查了一下许可证。所以我授予了上传文件的所有权限。但仍然无法下载它。。!检索是如何进行的?通过使用触发下载的特定servlet URL,或者为上传的文件提供静态资源URL?发生此错误时,您在Tomcat日志中看到了什么?上传的文件在上传操作后是否具有正确的读取/执行权限?没有错误。文件已成功上载。我甚至可以从SSH登录中看到文件。我无法从URL下载它们。@Souvlaki:嗨。我查了一下许可证。所以我授予了上传文件的所有权限。但仍然无法下载它。。!检索是如何进行的?通过使用触发下载的特定servlet URL,还是为上传的文件提供静态资源URL?