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

时间:2012-01-27 12:25:13

标签: 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();
    }
}

0 个答案:

没有答案