我尝试从web上传文件,文件存储在文件系统中。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
File file1 = new File(name + ".upload");
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(file1));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + " into " + name
+ "-uploaded !";
} catch (Exception e) {
e.printStackTrace();
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name
+ " because the file was empty.";
}
}
上面的代码工作良好。但是当我尝试使用绝对目录时,它失败了,像
这样的代码@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
File file1 = new File("c:/" + name + ".uploaded");
file1.getParentFile().mkdirs();
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(file1));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + " into " + name
+ "-uploaded !";
} catch (Exception e) {
e.printStackTrace();
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name
+ " because the file was empty.";
}
}
抛出file not exists异常,而我已经创建了dirs。有人知道原因吗?谢谢!
将代码块更改为以下
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String handleFileUpload(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) {
String yourUploadDirectory = "uploads";
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
File file1 = new File("c:/" + yourUploadDirectory + "/" + name + ".uploaded");
// You must write this line so that the designated file is first created, otherwise getParentFile() will throw error.
file1.createNewFile();
file1.getParentFile().mkdirs();
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(file1));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + " into " + name
+ "-uploaded !";
} catch (Exception e) {
e.printStackTrace();
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name
+ " because the file was empty.";
}
}
有一个专门的文件夹用于上传总是好的