【问题标题】:Spring mvc file upload春天mvc文件上传
【发布时间】:2015-02-25 15:20:45
【问题描述】:

我正在处理 spring mvc 文件上传。在视图中,我使用 plupload 多文件上传插件。这是我的上传操作:

 @RequestMapping(value = CrudURI.uploadDo, method = RequestMethod.POST, produces = "application/json")
public @ResponseBody String uploadDo(@RequestBody MultipartFile file, 
        @RequestParam String name, 
        @RequestParam(required=false, defaultValue="-1") int chunks,
        @RequestParam(required=false, defaultValue="-1") int chunk) {


    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();
            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("/uploads/"+name)));
            stream.write(bytes);
            stream.close();
        } catch (Exception e) {

        }
    } else {

    }

    System.err.println(file.getOriginalFilename());
    return null;

}

此操作正常运行,没有任何错误或异常,但上传的文件未保存。有什么问题? 谢谢

【问题讨论】:

  • 您的代码是正确的。只需检查完整的目录路径并检查该文件是否存在。您可以打印文件的 absolutePath 并查看它是否存在吗?
  • 打扰一下,你到底是什么意思?
  • 我的问题是“上传”目录到底在哪里?您是否在预期的位置创建了上传目录?
  • 你是对的。问题是文件路径。我在tomcat服务器的bin文件夹中找到了上传的文件。保存后我需要移动文件。谢谢你的帮助。
  • stackoverflow.com/questions/68117703/… 帮帮我,请修复这个 spring mvc 文件处理问题

标签: java spring-mvc file-upload


【解决方案1】:

只需尝试以下代码:

File fileToSave=new File("/uploads/"+name);
file.transferTo(fileToSave);

还要确保您确实在映射中获取文件。

【讨论】:

  • 你确定你真的得到了文件吗?或者实际上你所做的映射是有效的?
  • 是的,我测试了`file.getOriginalFilename()`,这给了我一个文件名。这意味着文件正确发送到服务器,对吧?
  • 是的,您确定您正在检查图片名称正确的地方吗?
【解决方案2】:

Darshan 解决方案是正确的,您的原始代码存在一个问题,即您正在以 getBytes() 的形式读取文件,该文件未使用缓冲区,而是使用缓冲区进行写入。

我认为您的问题很可能是您试图覆盖上传的文件,至少根据您的输出位置"/uploads/"+name 看起来是这样。尝试更改名称,而不是使用空的 catch 块,为您的异常添加日志,它将指向您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2014-12-24
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多