如何使用jQuery获取图像的字节数而非图像尺寸?

5

我正在使用jQuery 1.7.1。

图片加载到浏览器窗口后,我想获取它的总字节数。是否有相应的对象名称/值?


可能是重复问题:https://dev59.com/dXM_5IYBdhLWcg3wmkUK - Christofer Eliasson
JavaScript 运行在客户端计算机上,如果浏览器支持 HTML5 的文件 API,你实际上可以获取用户计算机上图像的大小,当然前提是用户同意。要查找服务器上图像的大小,你需要使用像 PHP 或 Rails 这样的服务器语言,或者你可以通过 AJAX 发送 HEAD 请求来获取文件大小,或者将图像加载到画布中并在那里获取文件大小。 - adeneo
5个回答

3

不,你无法使用jQuery或纯JavaScript获取图像大小。唯一的方法是使用ajax从服务器端获取它。

您可以获取图像URL并将其发送到服务或服务器端页面,让页面或服务返回图像大小。


2

这里是用于获取图片大小和类型的jQuery代码,并带有验证功能。您可以将此代码放入jQuery文件中的函数中使用。

if (window.File && window.FileReader && window.FileList && window.Blob)
{
   var pic_size = $('#profile_pic')[0].files[0].size;//get file size 
   var pic_type = $('#profile_pic')[0].files[0].type;

   var extension = pic_type.split('/').pop().toUpperCase();

    if (extension!="PNG" && extension!="JPG" && extension!="GIF" && extension!="JPEG" || pic_size>=2048000)
    {
        alert ("Please Select PNG,JPG,GIF,JPEG Image Only and File Size not Greater than 2MB");
        $( "#profile_pic" ).focus()
        return false;
    }
 }

1
尝试一下,这里有JavaScript代码。
$("#file_id")[0].files[0].size

0

我认为这是不可能的。你可能需要一个服务器端语言。


0

您可以通过以下方式获取文件大小

$("#selector")[0].files[0].size

同时,您可以通过以下方式获取文件格式

$("#selector")[0].files[0].type

如果你想进行验证,例如文件大小不超过2 MB,那么你可以尝试这样做

var mS_totalBytes = this.files[0].size;
var mS_size = Math.floor(mS_totalBytes/1024000); // its on MB

根据您的需求使用if else条件,如下所示

var mS_totalBytes = this.files[0].size;
var _size = Math.floor(mS_totalBytes/1024000);   // in MB
//alert(mS_size);
if(mS_size >= 1){
    jQuery(".ExportAndroidAsset").prop('disabled', true);
    alert("MAximum File Size is 1MB");
    jQuery(".pxel_Bar").css("width","1%");
    jQuery(".pxel_Progress").hide();
    jQuery(".tab-pane .output label").show();
    jQuery('input[name=imagefile]').val('');
}
else{
    jQuery(".ExportAndroidAsset").prop('disabled', false);
    jQuery(".pxel_Progress").show();
    jQuery(".tab-pane .output label").hide();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接