文件上载引用尚未插入的记录

时间:2017-01-07 11:50:32

标签: java spring web upload

我有一个问题,我找不到令人满意的答案。

我有一个“添加产品”屏幕,此产品有零个或多个图像。在同一个屏幕上有上传选项。

我的问题是:如果我还没有它的ID,我怎样才能将图片上传到产品中?因为它还没有保存在数据库中。

这种情况有没有最好的做法?

提前致谢

1 个答案:

答案 0 :(得分:0)

我只是列出了关于如何处理它的观点:

  1. 同时处理两者 - 使用enctype=”multipart/form-data”(使用spring)点击保存/添加按钮,立即发送产品的图片和详细信息
    • 现在您可以处理您的代码了。执行验证。
    • 如果它通过了所有验证,则上传图像/保存图像。
    • 将url / filepath发送到保存产品的Object / DB。
    • 缺点:
      • 假设用户已经上传了文件并填写了产品详细信息。在这种情况下,我们仍在等待用户输入产品的所有详细信息然后上传。
      • 保存期间的最终上传需要时间。 (第二种选择可以克服这一点)
  2. 首先上传图片,如果它们可用,然后保存产品 -
    • 首先将图像上传到服务器(与用户添加图像时一样,继续上传)。
    • 让服务器将所有这些图像保存在临时位置并返回UUID编号以唯一标识这些图像。
    • 在保存/添加操作中,让客户端在上传时间内发送从服务器获取的所有UUID列表。现在,服务器可以识别所有图像可以从临时目录移回中央服务器或将图像与产品关联。
    • 当用户退出产品页面而不保存或所有3种的组合时,您可以从客户端进行另一次Cron JobSessionTimeoutListener或A来电,以删除那些与最后 X分钟(会话超时分钟)
    • 的任何产品无关
    • 缺点:
      • 需要进行大量更改和后处理/清理开销。
  3. 首先处理产品然后处理图像 -
    • 首先将产品详细信息推送到服务器保存,服务器返回已保存的productId。
    • 现在客户端使用productId和Images再次调用服务器。
    • 缺点:
      • 我们依靠客户来处理交易,这很糟糕。
      • 与数据的不一致可能会增长。
      • 与其他两种方法相比,整个过程所需的时间可能会增加。
  4. PS:我觉得第二种观点是好的。这只是我的意见。