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 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题