我试图获得一个"文件"从html表单调用的servlet中的实例,我可以在计算机上选择PDF文件。 我成功地将文件作为" InputStream"但后来我无法进一步将其转换为"文件"宾语。
经过多次尝试之后,我仍然无法弄清楚我应该做些什么才能让它发挥作用。有什么想法吗?
错误:
java.io.FileNotFoundException: test.pdf (Read-only file system)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:360)
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:319)
at org.apache.commons.io.FileUtils.copyToFile(FileUtils.java:1552)
at org.apache.commons.io.FileUtils.copyInputStreamToFile(FileUtils.java:1528)
代码:
Part filePart = request.getPart("file");
InputStream fileContent = filePart.getInputStream();
if (fileContent != null)
{
File file = new File(filename.trim() + ".pdf");
FileUtils.copyInputStreamToFile(fileContent, file);
//use the "file" instance
//...
}
答案 0 :(得分:2)
正如异常告诉你的那样,问题不在于“创建文件”。问题是磁盘/分区是写保护的
您应该在可写的文件系统上创建文件。尝试指定绝对路径,例如
File file = new File("/tmp/" + filename.trim() + ".pdf");
//or
file = new File("/home/userhome/" + filename.trim() + ".pdf");
该文件应该只在可写文件系统上创建。