Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从计算机或URL加载文件_Java_Json_Spring Mvc - Fatal编程技术网

Java 如何从计算机或URL加载文件

Java 如何从计算机或URL加载文件,java,json,spring-mvc,Java,Json,Spring Mvc,我有一个webapp,它接受JSON文件并将其解析为对象。我的目标是让用户能够从本地计算机或URL上传文件 我的索引JSP页面如下所示: <form method="post" action="products" enctype="multipart/form-data"> Select a file from the computer <input type="file" name="file"> <br> Or load from

我有一个webapp,它接受JSON文件并将其解析为对象。我的目标是让用户能够从本地计算机或URL上传文件

我的索引JSP页面如下所示:

<form method="post" action="products" enctype="multipart/form-data">
    Select a file from the computer <input type="file" name="file">
    <br>
    Or load from URL<input type="url" name="urlFile">
    <br>
<button type="submit">Parse</button>

当我试图从本地计算机上传它时,它工作得非常好,但当我尝试使用URL时,我得到了500个错误(
java.io.FileNotFoundException
)。我相信这是因为系统仍然试图像在计算机上查找本地文件一样查找它。如何解决此问题?

异常来自
FileUtils.copyURLToFile
。表示发生这种情况的原因如下:

  • 如果无法打开源URL
  • 如果目标是一个目录
  • 如果无法写入目的地
  • 如果目标需要创建但无法创建
  • 如果在复制过程中发生IO错误
  • 我估计最有可能的两位候选人是3号和4号。您可能没有写入该目录的权限。围绕FileUtils方法添加一个try-catch并记录问题

    String tDir = System.getProperty("java.io.tmpdir");
    String path = tDir + "tmp" + ".xml";
    convFile = new File(path);
    convFile.deleteOnExit();
    try {
        FileUtils.copyURLToFile(url, convFile);
    }
    catch (IOException e) {
        // log exception
    }
    

    1.读取并发布异常的堆栈跟踪。2.使用调试器或简单的System.out.println了解变量包含的内容。3.了解如何正确创建文件路径:新建文件(目录,名称)()。4.Java有一种创建临时文件的方法(但不确定保存到临时文件的意义):鉴于OP在web框架中工作,最好将日志添加到框架本身为错误处理提供的任何钩子中。记录失败的最佳位置通常是在代码边界处(或者在框架的情况下略高于边界)。将其直接放在调用周围可能会导致错误,因为重试可能会被遗忘,而使用重试可能会导致重复的日志记录。
    String tDir = System.getProperty("java.io.tmpdir");
    String path = tDir + "tmp" + ".xml";
    convFile = new File(path);
    convFile.deleteOnExit();
    try {
        FileUtils.copyURLToFile(url, convFile);
    }
    catch (IOException e) {
        // log exception
    }