PHP-PHP如何在客户端上传一个很大文件之前获取文件大小?

发布于 2016-11-08 11:45:05 字数 166 浏览 1216 评论 4

我在客户端用浏览器把当地的一个4G视频准备上传到服务器,上传大于4G的文件,点击上传过一会出现该网页无法显示。我想实现上传之前获取文件大小 我用了fileSystem = new ActiveXObject("Scripting.FileSystemObject"),无法获取automatic对象。查了支持本地上传

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑾兮 2017-09-29 11:27:47

jquery uploadify可以检查上传前文件的大小

想挽留 2017-07-18 01:11:07

PHP只能在接收到数据后才能进行对应的验证操作,因此想要在上传之前进行判断肯定是做不到的,因此需要借助其他的方式进行:
1、使用JS做判断文件大小,这个因为需要调用activex,所以IE浏览器会报告安全问题。

 function showsize(files)
{
var fso,f;
fso=new activexobject("scripting.filesystemobject");
f=fso.getfile(files);
if(f.size>1024*4){
alert(f.size+" bytes");
}

2、HTML5标准的话非常好办的:
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
这样能够限制上传的大小和文件的类型,一旦大于指定的大小,就会主动放弃上传。

当然以上的两种方法因为都是在客户端进行验证,无法保证绝对的安全,因此建议在上传后继续使用$_FILES数组中的$_FILES['filename']['size'] 进行对应的文件大小的检查,以确定用户没有篡改相应的内容。

夜无邪 2017-06-30 17:56:40

1、在客户端验证上传文件的大小可以使用flash来做上传,现在几乎所有的上传插件都可以在客户端验证文件的大小、文件类型,以及实现异步上传和上传进度还有批量上传。主要就是兼容性好,使用方便。所以在客户端验证文件大小可以用flash组件实现。例如:SWFupload、jquery uploadify 等。

2、html5 中在客户端验证也是相当方便,举个简单的例子:

html:

<form method="post" name="uploadData">
<input type="file" name="fileChooser" onchange='getFiles()'/>
</form>

js:

function getFiles() {
var file = document.forms['uploadData']['fileChooser'].files[0];
console.log(file);
}

输出如图:

详细可以看html5 file aip

甜柠檬 2017-06-22 15:57:12

PHP是在用户的HTTP请求发送完毕之后才开始执行的,所以如果是用form表单直接上传,那么等PHP开始执行时文件肯定已经上传完了。
所以你只能用Javascript控件在本地判断文件大小,然后再决定是否上传。在PHP里也进行同样的判断,以防止用户跳过JS脚本验证。但PHP是不可能在文件上传完之前得知文件大小的(除非你用JS在文件上传之前另外生成一个请求,只包含文件的大小)。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文