如果.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配置限制。
答案 0 :(得分:1)
将其分成两个一个接一个地链接的ajax调用。首先,请求服务器压缩文件,返回成功代码以及可能的错误消息(文件太大等),以及刚刚创建的zip文件的某种标识符。如果拉链不是太大,请直接使用您刚刚获得的标识符进行请求。否则,显示您的错误消息。