首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.io.FileNotFoundException (无此类文件或目录)-下载文件

问java.io.FileNotFoundException (无此类文件或目录)-下载文件
EN

Stack Overflow用户
提问于 2020-10-08 03:19:42
回答 1查看 1.2K关注 0票数 0

我有网络应用程序托管在Linux上,包含上传.rar文件的页面和下载它的另一个页面。对于上传功能工作正常,文件上传到服务器成功,但对于下载,它给了我以下异常:

代码语言:javascript
复制
 [servelt.scriptdownloadservelt] in context with path [/OSS-CPE-Tracker] threw exception
  java.io.FileNotFoundException: \usr\local\apache-tomcat-8.5.31\OSS-CPE-Tracker\Zaky\QCAM.rar (No such file or directory)

我使用下面的函数进行上传:

代码语言:javascript
复制
String destDir = "/usr/local/apache-tomcat-8.5.31/OSS-CPE-Tracker/Zaky";
            for (FileItem item : multiparts) {
                if (!item.isFormField()) {
                    String name = new File(item.getName()).getName();
                    if(name.equalsIgnoreCase("QCAM.rar")) {
                                                
                    File destFile = new File(destDir, "QCAM.rar");
                    if (destFile.exists()) {
                        destFile.delete();
                    }
                    item.write(new File("/usr/local/apache-tomcat-8.5.31/OSS-CPE-Tracker/Zaky" + File.separator + name));
                    request.setAttribute("gurumessage", "File Uploaded Successfully");

                }else {
                    request.setAttribute("gurumessage", "Kindly use the agreed name");

                }

这里的下载函数出现了我面临的问题和上面的异常情况:

代码语言:javascript
复制
response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String gurufile = "QCAM.rar\\";
    String gurupath = "\\usr\\local\\apache-tomcat-8.5.31\\OSS-CPE-Tracker\\Zaky";

    
    response.setContentType("APPLICATION/OCTET-STREAM");
    response.setHeader("Content-Disposition", "attachment; filename=\""
            + gurufile + "\"");

    FileInputStream fileInputStream = new FileInputStream(gurupath
            + gurufile);

    int i;
    while ((i = fileInputStream.read()) != -1) {
        out.write(i);
    }
    fileInputStream.close();
    out.close();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 03:28:46

出现此错误的唯一原因是在该路径下找不到文件。

请验证路径

代码语言:javascript
复制
    String gurufile = "QCAM.rar\\";
    String gurupath = "\\usr\\local\\apache-tomcat-8.5.31\\OSS-CPE-Tracker\\Zaky";
    // <...>
    FileInputStream fileInputStream = new FileInputStream(gurupath
            + gurufile);

在unix系统中,使用正斜杠/而不是反斜杠\解析文件路径。

尝试更改为与upload脚本相同的值:

代码语言:javascript
复制
    FileInputStream fileInputStream = new FileInputStream("/usr/local/apache-tomcat-8.5.31/OSS-CPE-Tracker/Zaky/QCAM.rar")

这应该可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64250903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档