javascript文件读取器未定义的宽度

javascript文件读取器未定义的宽度,javascript,filereader,Javascript,Filereader,我有(可能)很容易解决的问题,但我自己无法解决。 基本上我的reader.width和reader.height一直在说未定义:/。。其他一切都正常工作 功能手柄文件选择(evt,选择器){ var f=evt.target.files[0]; var reader=new FileReader(); reader.onload=(函数(文件){ 返回函数(e){ var imgW=reader.width; var imgH=读卡器高度; 调试(“宽度:+imgW);//未定义 调试(“高度:

我有(可能)很容易解决的问题,但我自己无法解决。 基本上我的
reader.width
reader.height
一直在说未定义:/。。其他一切都正常工作

功能手柄文件选择(evt,选择器){
var f=evt.target.files[0];
var reader=new FileReader();
reader.onload=(函数(文件){
返回函数(e){
var imgW=reader.width;
var imgH=读卡器高度;
调试(“宽度:+imgW);//未定义
调试(“高度:+imgH);//未定义
var thumbHtml=['').join('');
$(选择器).parent();
$(选择器).parent()同级('.previewThumb').removeClass('hidden'))
};
})(f) );
//作为数据URL读入图像文件。
reader.readAsDataURL(f);
$(选择器).同级('.list').html(''+escape(f.name)+'');
}
我还尝试了
e.width
theFile.width
-它们都返回未定义:/

我试着用谷歌搜索,但根据我读到的所有信息,reader.width应该可以工作

谢谢你的帮助

干杯,
Tom

FileReader
本身没有宽度属性。其结果仅包含原始图像数据。在读取宽度之前,必须将其作为
图像加载。因此,您需要为要加载的文件加载1)处理程序,为要加载的图像加载2)处理程序

试试这样的

function handleFileSelect(evt, selector) {

    var f = evt.target.files[0];
    var reader = new FileReader();

    reader.onload = function(e) { 
        // at this point we have the raw data. now we 
        // create an image out of it
        var image = new Image();
        image.src = e.target.result;

        image.onload = function() {
          // now we have the image.
          var imgW = image.width;
          var imgH = image.height;
          console.debug("width: "+imgW);
          console.debug("height: "+imgH);

          // we can insert image directly into DOM
          var thumb = $(image).addClass("thumb");
          $(selector).parent().siblings('.previewThumb').empty().append(thumb);
          $(selector).parent().siblings('.previewThumb').removeClass('hidden');
        };
    };

    // Read in the image file as a data URL.
    reader.readAsDataURL(f);
    $(selector).siblings('.list').html('<span>'+escape(f.name)+'</span></span>');
}
功能手柄文件选择(evt,选择器){
var f=evt.target.files[0];
var reader=new FileReader();
reader.onload=函数(e){
//现在我们有了原始数据,现在我们
//从中创建一个图像
var image=新图像();
image.src=e.target.result;
image.onload=函数(){
//现在我们有了图像。
var imgW=图像宽度;
var imgH=图像高度;
控制台调试(“宽度:+imgW”);
控制台调试(“高度:+imgH”);
//我们可以直接将图像插入DOM
var thumb=$(image.addClass(“thumb”);
$(选择器).parent()同级('.previewThumb').empty().append(拇指);
$(选择器).parent()同级('.previewThumb').removeClass('hidden');
};
};
//作为数据URL读入图像文件。
reader.readAsDataURL(f);
$(选择器).同级('.list').html(''+escape(f.name)+'');
}

我认为FileReader没有宽度属性。你核对过这个答案了吗?是的,这就是我提到的。。。我原以为它可以工作,但实际上不行:(你需要创建一个
图像
,并将文件内容设置为图像源。然后读取图像的宽度。哦,好的,我可以在reader.onload中执行吗?