Java 无法从服务器打开我上传的文件?

Java 无法从服务器打开我上传的文件?,java,servlets,file-io,Java,Servlets,File Io,我在Tomcat服务器上托管一个网站。应用程序的所有操作都使用Struts 1.1和Spring。我有一个用于将文件上载到服务器的页面。 当用户上传任何文件时,它会被成功上传,但在尝试检索时会出现404错误。我使用SSH登录检查了文件,上传的文件就在那个位置。在过去的4天里,我一直在为这个问题挠头,但没有解决办法。它工作正常,在我的本地机器上没有任何问题。部署中存在的问题 一个重要的注意事项:从SSH登录,如果我尝试将该文件移动到其他位置,然后将其放回原始位置,我可以检索该文件。。!!!我不知道

我在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?