Javascript 在jquery中,下载前检查要下载的文件是否为空

Javascript 在jquery中,下载前检查要下载的文件是否为空,javascript,jquery,html,Javascript,Jquery,Html,我用jquery下载了一个文件,我是通过window.location.href实现的。但我的挑战是,我需要找出我打算下载的文件是否为空。如果它是空的,我需要显示一个显示错误消息的弹出窗口,而不是下载那个空文件。但在使用jquery下载之前,我不知道如何捕获文件是否为空 我在网上搜索,找不到答案。请帮助我解决此问题。要实现此目的,您可以向URL发送HEAD请求以获取响应的标题。然后您可以检查内容长度值,如下所示: $.ajax('/yourfile.foo', { type: 'HEAD',

我用jquery下载了一个文件,我是通过
window.location.href
实现的。但我的挑战是,我需要找出我打算下载的文件是否为空。如果它是空的,我需要显示一个显示错误消息的弹出窗口,而不是下载那个空文件。但在使用jquery下载之前,我不知道如何捕获文件是否为空


我在网上搜索,找不到答案。请帮助我解决此问题。

要实现此目的,您可以向URL发送HEAD请求以获取响应的标题。然后您可以检查
内容长度
值,如下所示:

$.ajax('/yourfile.foo', {
  type: 'HEAD',
  success: function(data, status, xhr) {
    var size = parseInt(xhr.getResponseHeader('Content-Length'), 10) || 0;
    if (size != 0) {
      window.location.assign('/yourfile.foo');
    } else {
      console.log('invalid file, show an error here...');
    }
  }
});

尽管如此,预防是解决这一问题的更好办法。您应该修改您的逻辑,这样无效文件甚至不会显示给用户。允许用户选择他们无法拥有的东西只会激怒他们。

在开始下载之前,您必须向服务器单独请求检查文件大小。客户机无法事先知道文件大小,而不询问服务器。但你为什么一开始就有空文件呢?当然不应该让它们被创造出来?这种情况是如何发生的?或者你真的在说某人请求一个根本不存在的文件?还不是100%清楚。