在没有activexobject的情况下获取上传文件的大小?

Posted

技术标签:

【中文标题】在没有activexobject的情况下获取上传文件的大小?【英文标题】:Get the uploading file size without activexobject? 【发布时间】:2011-10-04 05:25:43 【问题描述】:

是否可以使用 java 脚本或不使用 activex 对象来获取上传文件的文件大小? 它应该与所有浏览器兼容。

【问题讨论】:

【参考方案1】:

兼容所有浏览器? - 没有解决方案

兼容 firefox,chrome,safari,opera ?- 以下脚本

document.getElementById("file_elem_id").files[0].size

不适用于 IE8(尚未在 IE9 上测试)

【讨论】:

我正在使用 firefox 7 并且它为我工作。检查我之前评论中的链接 在 ff 7.0.1 中获取未定义的错误消息。 document.getElementById("file_elem_id").files[0].size 这适用于 Chrome 和 FF【参考方案2】:

让您知道 IE-9 或更低版本不支持 jQuery 文件 API。在这些情况下,我们必须通过创建 ActiveXObject 来检查文件大小,因为这是处理系统文件以在上传前获取文件大小的唯一方法。

但是这里还有另一个问题,比如 ActiveX 需要在客户端机器上的浏览器上正确安装/启用/配置,否则将无法识别。因此,我有三种方法可以在这里获取文件大小:- 1)通过将整个文件传输到服务器并从那里返回文件大小来获取文件大小。 2)在客户端使用Silverlight、Flash之类的东西很容易找到。 3)当文件超过文件大小限制时,将文件以块的形式上传到服务器,然后向用户返回一条消息。

在 jQuery 中获取文件大小(IE 10、FF、Chrome 浏览器支持)

$('#fileInputID').change(function()
        var file=this.files[0];
        alert(file.size||file.fileSize);
    )

使用 ajax 获取文件大小,仅发出 HEAD 请求:

var response = $.ajax(
type: "HEAD",
url: fileurl,// file url on server
success: function () 
    alert("Size of file is " + request.getResponseHeader("Content-Length"));
  
);

希望这会有所帮助。

参考:- http://www.aspnetcodes.com/2012/07/example-to-get-file-size-before-upload.html

【讨论】:

以上是关于在没有activexobject的情况下获取上传文件的大小?的主要内容,如果未能解决你的问题,请参考以下文章

在没有 AJAX 的情况下获取文件上传状态

如何在上传之前获取文件名并在没有 fakepath 的情况下传递到另一个文本输入字段

JS采用ActiveXObject实现用户在提交表单时屏蔽敏感词的功能

如何在没有表单的情况下将图像上传到节点 js 服务器?

XMLHttpRequest与ActiveXObject

可以在没有持续回流的情况下动态调整高度的文本区域吗?