【发布时间】:2017-09-16 19:43:56
【问题描述】:
我有一个 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>
控制器类如下所示
public String parse(@RequestParam("file") MultipartFile file,
@RequestParam("urlFile") URL url,
Model model)
throws IOException, SAXException, ParserConfigurationException
{
File convFile = null;
if(file != null)
{
convFile = new File(file.getOriginalFilename());
file.transferTo(convFile);
}
else if(url != null)
{
String tDir = System.getProperty("java.io.tmpdir");
String path = tDir + "tmp" + ".xml";
convFile = new File(path);
convFile.deleteOnExit();
FileUtils.copyURLToFile(url, convFile);
}
//... parsing JSON...
return "products"
}
当我尝试从本地计算机上传它时效果很好,但是当我尝试使用 URL 上传时,我得到 500 错误 (java.io.FileNotFoundException)。我相信这是因为系统仍然试图像计算机上的本地文件一样找到它。我该如何解决?
【问题讨论】:
-
1.阅读并发布异常的堆栈跟踪。 2. 使用调试器或简单的 System.out.println 来了解变量包含的内容。 3. 学习如何正确创建文件路径:new File(dir, name) (docs.oracle.com/javase/8/docs/api/index.html?java/nio/file/…)。 4. Java 有一种创建临时文件的方法(但不确定保存到临时文件的意义):docs.oracle.com/javase/8/docs/api/java/nio/file/…
标签: java json spring-mvc