File upload REST应用程序中无HttpRequest文件上载的上下文路径
我正在构建REST应用程序。我想上传一个文件,并将其保存在/WEB-INF/resource/uploads中 如何获取此目录的路径?我的控制器看起来像这样File upload REST应用程序中无HttpRequest文件上载的上下文路径,file-upload,spring-mvc,File Upload,Spring Mvc,我正在构建REST应用程序。我想上传一个文件,并将其保存在/WEB-INF/resource/uploads中 如何获取此目录的路径?我的控制器看起来像这样 @RequestMapping(value = "/admin/house/update", method = RequestMethod.POST) public String updateHouse(House house, @RequestParam("file") MultipartFile file, Model model) {
@RequestMapping(value = "/admin/house/update", method = RequestMethod.POST)
public String updateHouse(House house, @RequestParam("file") MultipartFile file, Model model) {
try {
String fileName = null;
InputStream inputStream = null;
OutputStream outputStream = null;
if (file.getSize() > 0) {
inputStream = file.getInputStream();
fileName = "D:/" + file.getOriginalFilename();
outputStream = new FileOutputStream(fileName);
int readBytes = 0;
byte[] buffer = new byte[10000];
while ((readBytes = inputStream.read(buffer, 0, 10000)) != -1) {
outputStream.write(buffer, 0, readBytes);
}
outputStream.close();
inputStream.close();
}
} catch(Exception ex) {
ex.printStackTrace();
}
model.addAttribute("step", 3);
this.houseDao.update(house);
return "houseAdmin";
}
第二个问题…什么是上传用户文件的最佳位置?
/WEB-INF
是存储上传文件的不好地方。无法保证这是磁盘上的实际目录,即使是,appserver也可能禁止对其进行写访问
您应该将文件存储在哪里取决于您想对它们执行什么操作,以及您运行的操作系统。我的建议是,只需选择webapp本身之外的地方。也许可以创建一个专用目录
此外,将多部分文件
传输到另一个位置的过程比您想象的要简单得多:
@RequestMapping(value = "/admin/house/update", method = RequestMethod.POST)
public String updateHouse(House house, @RequestParam("file") MultipartFile srcFile, Model model) throws IOException {
File destFile = new File("/path/to/the/target/file");
srcFile.transferTo(destFile); // easy!
model.addAttribute("step", 3);
this.houseDao.update(house);
return "houseAdmin";
}
/WEB-INF
是存储上传文件的好地方。无法保证这是磁盘上的实际目录,即使是,appserver也可能禁止对其进行写访问
您应该将文件存储在哪里取决于您想对它们执行什么操作,以及您运行的操作系统。我的建议是,只需选择webapp本身之外的地方。也许可以创建一个专用目录
此外,将多部分文件
传输到另一个位置的过程比您想象的要简单得多:
@RequestMapping(value = "/admin/house/update", method = RequestMethod.POST)
public String updateHouse(House house, @RequestParam("file") MultipartFile srcFile, Model model) throws IOException {
File destFile = new File("/path/to/the/target/file");
srcFile.transferTo(destFile); // easy!
model.addAttribute("step", 3);
this.houseDao.update(house);
return "houseAdmin";
}
您不应该将文件存储在
/WEB-INF/resource/uploads
中。这个目录要么在WAR中(如果打包的话),要么在servlet容器中的某个地方分解。第一个目标是只读的,后者不应用于用户文件
存储上传的文件时,通常考虑两个位置:
您不应该将文件存储在
/WEB-INF/resource/uploads
中。这个目录要么在WAR中(如果打包的话),要么在servlet容器中的某个地方分解。第一个目标是只读的,后者不应用于用户文件
存储上传的文件时,通常考虑两个位置:
那太好了。短得多,简单得多,好得多:)谢谢你,太好了。更简短、更简单、更好:)谢谢你是的,我知道我可以使用DB,但我不想。I want上载将显示在页面(大部分)图像上的用户文件。因此,我应该创建像/var/www/project/user\u uploads这样的目录,然后从那里抛出文件并上传到那里。如果我错了,请纠正我,但浏览器不能访问
/var/www/
目录吗?这意味着每个用户都可以在没有您控制的情况下访问任何fil。这可能是一个优势(原始Apache访问速度很快),但如果您想应用更严格的安全模型,这也是一个安全漏洞。确实如此,但我只能从Apache限制对此目录的访问。只有图像文件,所以如果有人访问它,就不会有大的戏剧性。但是我同意你的匿名FTP文件夹的例子是更好的Tomasz你会这么好,并把我链接到一些样本如何做一个适当的文件管理?这很悲哀,但我在上传文件和在网站上显示文件时遇到了问题:(我想我的问题是在restful应用程序中。当我想从本地硬盘上显示和显示图像时,我得到了404。我应该如何配置它?是的,我知道我可以使用DB,但我不想。我想上传将显示在页面上的用户文件(主要是)图像。所以我应该创建像/var/www/project/user\u uploads这样的目录,然后从那里抛出文件并上传到那里。如果我错了,请纠正我,但浏览器不能访问/var/www/
目录吗?这意味着每个用户都可以在没有您控制的情况下访问任何fil。这可能是一个优势(原始Apache访问速度很快),但如果你想应用更严格的安全模型,这也是一个安全漏洞。没错,但我只能限制从apache访问此目录。只有图像文件,因此,如果有人访问它,将不会有大的戏剧性。但我同意,你的匿名FTP文件夹的示例更好。托马斯兹,你能这么好,并将我链接到某个samp吗le如何正确管理文件?这很遗憾,但我在上传文件和在网站上显示文件时遇到了问题:(我认为我的问题是在restful应用程序中。当我想从本地硬盘显示和映像时,我得到了404。我应该如何配置它?