在文件完成下载之前或之后或之后发送javascript警报

时间:2014-06-04 20:06:57

标签: javascript php download alert

如果.zip下载(里面有一些照片)达到了一个确定的大小,让我们说10MB,我想打印一个javascript警报或任何警告方式给用户,告诉他下载已被限制因为它达到了60MB的限制。

我在这里使用MVC,我的控制器知道.zip文件大小,但是如何在达到该限制后发送该警报并仍然提供该文件供用户下载?

我通过设置标题Content-Type,Content-Length,Content-Disposition和filename来输出文件:

// alert could be here
// 60000*1024 means 60MB
// if (filesize($file_zip) >= 60000*1024) alert('alert msg');

header('Content-Type: application/zip');
header('Content-Length: '.filesize($file_zip));
header('Content-Disposition: attachment; filename=testPhotos.zip');
readfile($file_zip);
unlink($file_zip);

我需要这样做,因为出于某种原因,请求在.zip文件达到63,7MB并且浏览器显示空白屏幕后停止。不,请求不会超时,因为它设置为高值。我不知道这是不是php或nginx配置限制。

1 个答案:

答案 0 :(得分:1)

将其分成两个一个接一个地链接的ajax调用。首先,请求服务器压缩文件,返回成功代码以及可能的错误消息(文件太大等),以及刚刚创建的zip文件的某种标识符。如果拉链不是太大,请直接使用您刚刚获得的标识符进行请求。否则,显示您的错误消息。