wangml010 2019-11-15 15:53 采纳率: 0%
浏览 258

关于 struts2+spring 文件上传的问题

程序是用java开发的,框架用的spring + struts2。然后情况是这样的:
我首先更改一条记录A(比如说课程表A),然后我把课程表上传到后台。OK,没问题。
然后我此时再次新建或更改一条记录B(课程表B),但并不上传附件,传到后台,我的uploadFile和uploadFileName都是有值,而且值是tomcat 的work文件夹下的tmp文件,所以这样就造成了数据的混乱,大神有没有遇到过这样的情况?
:走的是一个Controller,第二次不管有没有上传文件,file对象都能被实例化,是因为内存中存在吗?还是怎么着,没什么头绪。

    private File uploadFile;//文件对象
    private String uploadFileContentType;// 文件类型
    private String uploadFileFileName; // 文件名

    public String save() {
        String resultStr = trainService.save(getRequest(), uploadFile,
                uploadFileFileName);
        return resultStr;
    }

//.......uploadFile、uploadFileContentType、uploadFileFileName 的 get se//t 方法
  • 写回答

1条回答 默认 最新

  • 明初啥都能学会 2024-04-15 11:04
    关注

    看起来你遇到了一个常见的问题:在使用 Struts2 上传文件时,即使没有选择文件也会传递一些临时文件到后台。这可能导致数据混乱,因为你的上传方法在第二次调用时可能会误以为有文件上传。

    解决这个问题的方法之一是在上传之前检查文件是否为空,如果为空则不执行上传操作。你可以通过检查 uploadFile 对象是否为 null 来实现这一点。

    下面是一种可能的解决方法:

    public String save() {
        if (uploadFile != null) {
            String resultStr = trainService.save(getRequest(), uploadFile, uploadFileFileName);
            return resultStr;
        } else {
            // 处理没有上传文件的情况,可以返回错误信息或者其他操作
            return "error"; // 例如返回一个错误页面
        }
    }
    

    通过这样的处理,即使第二次调用时没有选择文件上传,你的方法也会检测到 uploadFile 为空,并且不会执行上传操作,避免了数据混乱的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记