代码之家  ›  专栏  ›  技术社区  ›  Kai

Django文件上载处理程序错误

  •  2
  • Kai  · 技术社区  · 15 年前

    在Django中,我希望在收到任何不以我指定的扩展名结束的文件上传后立即停止。为此,我定义了一个自定义上载处理程序,并编写了新的_文件,如下所示:

    def new_file(self, field_name, file_name, content_type, content_length, charset=None):
        basename, extension = os.path.splitext(file_name)
        if extension != ".txt":
            raise StopUpload(True) # Error: Only .txt files are accepted
    

    这对于停止上载很好,但也会清除request.file。现在,当我的视图收到请求时,它无法判断上传处理程序是否导致文件丢失,并且我无法向用户显示有用的消息。

    是否有任何方法将消息从上载处理程序传播到相应的视图,以便我可以向用户显示错误?我尝试过使用request对象,但它是不可变的。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Kai    15 年前

    我已经找到了无法让它工作的原因和解决方案 也

    确定何时调用上载处理程序。因此,上传 仅当您尝试访问时才会调用处理程序 请求文件。此外,我正在使用的请求对象 所以我们不能通过那里传递信息。然而,META仍然是

    处理上载,这将强制上载处理程序开始。当 错误被捕获到新的_文件中,我将self.request.META['error']设置为 没有文件的视图。最后,我在

    我希望这有帮助!