从理论上讲,是否不可能使用Javascript获取要上载的文件的大小?
怎么样从理论上讲,是否不可能使用Javascript获取要上载的文件的大小?,javascript,jquery,upload,Javascript,Jquery,Upload,怎么样 <script language="JavaScript"> function A() { var oas = new ActiveXObject("Scripting.FileSystemObject"); var d = document.a.b.value; var e = oas.getFile(d); var f = e.size; var mb=f/(1024); alert(mb + "kilo bytes"); } </script> 函数A(
<script language="JavaScript">
function A()
{
var oas = new ActiveXObject("Scripting.FileSystemObject");
var d = document.a.b.value;
var e = oas.getFile(d);
var f = e.size;
var mb=f/(1024);
alert(mb + "kilo bytes");
}
</script>
函数A()
{
var oas=new-ActiveXObject(“Scripting.FileSystemObject”);
var d=文件a.b.值;
var e=oas.getFile(d);
var f=e.尺寸;
var mb=f/(1024);
警报(mb+千字节);
}
使用javascript获取文件大小的方式不可能适用于所有浏览器
您可以使用flash上传程序(如uploadify或swfupload)异步上传文件,然后使用oncomplete回调获取文件大小。。。但这就是全部。不可能使用javascript以一种适用于所有浏览器的方式获得文件大小 您可以使用flash上传程序(如uploadify或swfupload)异步上传文件,然后使用oncomplete回调获取文件大小。。。但这就是全部。是的,这是不可能的 ActiveXObject只能在Windows/InternetExplorer上工作。是的,这是不可能的
ActiveXObject只能在Windows/InternetExplorer上运行。Javascript在沙箱中运行,不允许从本地系统获取文件对象详细信息。ActiveX只是IE特有的,在其他浏览器中无法做到这一点 Web浏览器能够运行 沙箱外部的JavaScript, 具有必要的特权,例如 例如,创建或删除文件。属于 当然,这些特权并不意味着什么 被授予从web上获取代码的权限
Javascript在沙箱中运行,不允许从本地系统获取文件对象详细信息。ActiveX只是IE特有的,在其他浏览器中无法做到这一点 Web浏览器能够运行 沙箱外部的JavaScript, 具有必要的特权,例如 例如,创建或删除文件。属于 当然,这些特权并不意味着什么 被授予从web上获取代码的权限
您自己无法获取文件大小,但浏览器会在实际文件数据之前将编码的文件大小发送到标头中的服务器
因此,您可以做的是启动上载,然后向服务器发送一个AJAX请求,询问文件的大小。但还有另一个问题:浏览器可以对文件进行编码以进行传输。这通常是base64,因此编码大小!=文件大小,但您可以计算原始文件大小:
orig=encodedSize*2/3
您自己无法获取文件大小,但浏览器将在实际文件数据之前将编码文件大小发送到标头中的服务器
因此,您可以做的是启动上载,然后向服务器发送一个AJAX请求,询问文件的大小。但还有另一个问题:浏览器可以对文件进行编码以进行传输。这通常是base64,因此编码大小!=文件大小但您可以计算原始文件大小:
orig=encodedSize*2/3
这个问题在非技术用户和新手程序员中很常见,他们主要关注事情是如何完成的,而不是为什么。当然,您可以在Internet Explorer中使用ActiveX或在Firefox中使用扩展来实现这一点,但您仍然需要停下来思考这是否是正确的做法。您需要在远程站点上授予对用户文件系统的访问权限,为此付出的代价太大了,因为在客户端知道文件大小的收益微乎其微
因此,如果不深入研究规范或提出问题,您应该知道这是不可能的,因为否则它将给HTML协议和浏览器带来巨大的安全风险
在极少数情况下,这是必要的,正确的做法是使用跨浏览器插件,如Java小程序或Flash。这些插件需要签名,以便用户知道谁在授予对其文件系统的访问权限。这个问题在非技术用户和新手程序员中很常见,他们主要关注事情是如何完成的,而不是为什么。当然,您可以在Internet Explorer中使用ActiveX或在Firefox中使用扩展来实现这一点,但您仍然需要停下来思考这是否是正确的做法。您需要在远程站点上授予对用户文件系统的访问权限,为此付出的代价太大了,因为在客户端知道文件大小的收益微乎其微 因此,如果不深入研究规范或提出问题,您应该知道这是不可能的,因为否则它将给HTML协议和浏览器带来巨大的安全风险
在极少数情况下,这是必要的,正确的做法是使用跨浏览器插件,如Java小程序或Flash。需要对这些插件进行签名,以便用户知道向谁授予对其文件系统的访问权限。这需要使用FileSystemObject的ActiveX实例。如果我是一个即将上载文件的用户,我不会完全乐意为您授予对我的整个文件系统的权限,因为这个简单的功能需要使用FileSystemObject的ActiveX实例。如果我是一个即将上载文件的用户,我不会完全乐意为这个简单的特性授予您对我的整个文件系统的权限。