在表单提交过程中,文件上传在什么时候发生?


At what point does a file upload take place during a form submit?

在HTML表单提交过程中,文件在什么时候上传到服务器(特别是PHP)的临时目录?我有一个表单,其中有几个字段和文件上传。我正在通过AJAX处理这个表单。

我使用第三方插件,通过AJAX上传文件(使用iFrame/xhr)。一旦文件上传,用户就可以提交表单。从技术上讲,这个文件输入字段位于表单内。当我通过AJAX进行处理时,我序列化了整个表单的数据(包括文件输入字段),然后发送出去进行处理。

我想知道的是;我是否应该在提交之前通过JS以编程方式清除文件输入字段,以防止客户端/服务器再次尝试文件上传?还是基于功能,在AJAX调用中完全忽略该字段?

基本上我只是想确定,如果用户上传一个3MB的文件,需要10秒上传,当他们实际提交表单(我通过jQuery捕获),即使文件实际上不能上传,他们将不得不等待另一个10秒,而客户端发送文件。

如果您通过AJAX提交表单,您可以控制发送到服务器的内容。如果使用$('form').serialize(),则文件内容不会包含在序列化的数据中,因此没有…你不需要清理那块地。只要确保你阻止了默认的表单提交。

要防止默认表单提交,您应该这样做:

$('form').on('submit', function(event) {
    event.preventDefault();
    // the rest of your form submission stuff,
    // including your AJAX call
    return false;
});