Struts2 在struts 2中预填充文件上载表单

Struts2 在struts 2中预填充文件上载表单,struts2,Struts2,我正在开发一个struts 2 web应用程序,用户可以通过文件上传表单上传文件,如果文件已经存在于数据库中,则应显示一条确认消息以覆盖现有文件或取消操作 上载时,将查询数据库中的该文件,如果该文件存在,将显示操作结果,并在会话中设置一个标志,该标志将显示jquery对话框以供用户确认。我需要在对话框中实现“继续”按钮,该按钮将设置另一个标志以指定覆盖,并再次调用相同的操作,这次将上载文件。为了实现这一点,我需要在调用上载操作之前,用previousrequest参数预先填充fileupload

我正在开发一个struts 2 web应用程序,用户可以通过文件上传表单上传文件,如果文件已经存在于数据库中,则应显示一条确认消息以覆盖现有文件或取消操作

上载时,将查询数据库中的该文件,如果该文件存在,将显示操作结果,并在会话中设置一个标志,该标志将显示jquery对话框以供用户确认。我需要在对话框中实现“继续”按钮,该按钮将设置另一个标志以指定覆盖,并再次调用相同的操作,这次将上载文件。为了实现这一点,我需要在调用上载操作之前,用previousrequest参数预先填充fileupload输入框

是否有其他方法来实现上述要求

如果需要任何细节,请告诉我


提前感谢。

如果数据库中存在具有相同文件名的文件,我假设您不想上载文件。如果是这种情况,为什么不在选择上传文件后立即检查文件名的重复性呢。这可以通过两种方式实现

  • 将所有文件名的列表与页面一起加载,并使用此列表检查所选文件名
  • 选择文件时,使用ajax向服务器发送检查重复文件名的请求
  • 您可以使用
    文件
    元素的
    onchange
    事件


    出于安全原因,您不能以编程方式处理
    文件
    元素的
    属性,否则您可以从用户系统中填写任何文件并提交表单

    您可以在发送请求之前通过复选框获得用户确认,询问是否覆盖该文件是否存在。然后在你的行动中做你的IO工作


    但是,如果您在发送请求后仍希望显示确认,我建议您使用自定义拦截器,在用户确认和文件存在的条件下传递请求。如果检查未通过,您可以返回确认部分的自定义结果,然后重新提交请求。这只是一个想法。

    非常糟糕的解决方案是加载所有文件名,第二个听起来不错。是的,但在我的应用程序中,我必须检查患者案例中的重复文件名(图像)。而且每个案例不能有超过5个图像,因此在这种情况下,对响应来说这不是一个坏主意,实际上是否上传文件取决于文件内容,因此在上传文件之前无法决定。但是,我已经放弃了尝试预先填充file upload字段,而是在研究将先前上传的文件存储在temp目录中并将请求中的文件名传递给JSP的方法。如果用户选择覆盖,将上载临时文件。感谢您的评论。接受答案,因为操纵文件上载字段的值不是实现解决方案的正确方法,也不可能:)据我所知,您不能在任何浏览器中的文件输入框中预先插入来自用户驱动器的文件,因为这可能会导致一些严重的安全问题。请参阅将文件发送到服务器并保存为临时文件是解决方案。