【问题标题】:Upload images before form submit Django在表单提交之前上传图片 Django
【发布时间】:2016-12-01 00:13:33
【问题描述】:

我要上传图片 Facebook 风格:在提交表单之前选择图片,当它们都上传后,立即提交表单。我知道如何在前端做到这一点,但问题出在后端。我找到了一些管理后端图像的方法,但我并不满意。所有这一切的很大一部分是避免存储不会使用的照片,例如如果用户在某些照片已经上传时关闭浏览器。我想到了 3 种上传方式,但我不知道哪种方式最好:

  1. 创建一个“tmp”目录并将所有上传的照片放在那里,当表单提交时,将所有使用的照片移动到另一个目录。 (使用这种方法可能会出现一些并发问题)
  2. 在我的数据库中创建一个 TempPhoto 表,并执行与之前的解决方案相同的操作,将使用过的照片从 TempPhoto 移动到永久表。
  3. 将照片直接添加到永久表中,并在预定的时间删除未使用的(与其他实体无关的)照片。 (我想这将是较慢的解决方案)

【问题讨论】:

    标签: django database image-uploading


    【解决方案1】:

    我认为您进行一些改革的第一种方式是最好的方式。您可以创建一个tmp 目录并将唯一数据(例如 IP 地址)附加到每个图像以控制并发性,然后在$(window).unload(...) 中编写一些脚本以向后端发送信号以从中删除图像tmp 用户在提交表单前关闭窗口时的目录。

    【讨论】:

    • 这样的话,单个用户的并发仍然存在问题,想象一个用户上传很多照片的速度如此之快,以至于生成了相同的唯一ID(例如IP +“1”)。我如何在 Django 中处理这个问题?我在帖子中提到的第二种处理并发的方法,您放弃了它,因为在表之间移动表条目比在目录之间移动照片要慢?
    • 实际上你可以通过添加一些额外的数据(例如图像哈希值或自动增量ID)使其更加独特。您在评论中的问题的答案是肯定的。我认为处理数据库的过程会比使用tmp 目录更慢。
    猜你喜欢
    • 2015-12-04
    • 2010-12-21
    • 2013-06-22
    • 1970-01-01
    • 2014-09-22
    • 2020-08-03
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多