Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Safari mobile检测输入文件中被忽略的大文件_Javascript_Html_Dom_Mobile Safari_File Io - Fatal编程技术网

Javascript 如何使用Safari mobile检测输入文件中被忽略的大文件

Javascript 如何使用Safari mobile检测输入文件中被忽略的大文件,javascript,html,dom,mobile-safari,file-io,Javascript,Html,Dom,Mobile Safari,File Io,Safari mobile忽略传入的大型文件(当前正在使用进行测试) 这样做时,输入不会触发任何事件(无更改、无错误、无任何内容)。它只是忽略用户操作 为了通知我们的用户,是否需要检测何时发生这种情况 此处的测试用例: 编辑:因为这看起来确实像一个 Safari但是,我在Safari bug追踪器上打开了问题#16862230(我会留下一个链接,但没有…哦,苹果…),如果你能复制,请对这个问题发表评论 我在iFadey上找到一篇关于计算上传文件大小的文章: 这是JavaScript: docu

Safari mobile
忽略传入的大型文件(当前正在使用进行测试)

这样做时,输入不会触发任何事件(无更改、无错误、无任何内容)。它只是忽略用户操作

为了通知我们的用户,是否需要检测何时发生这种情况

此处的测试用例:


编辑:因为这看起来确实像一个
Safari但是,我在Safari bug追踪器上打开了问题#16862230(我会留下一个链接,但没有…哦,苹果…),如果你能复制,请对这个问题发表评论

我在iFadey上找到一篇关于计算上传文件大小的文章:

这是JavaScript:

document.addEventListener( 'DOMContentLoaded', function() {
    var inputImg = document.getElementById( 'inputImg' );

    inputImg.addEventListener( 'change', function( e ) {
        var fileSize = getFileSize( inputImg );

        if( fileSize > -1 ) {
            document.getElementById( 'fileSize' ).innerHTML = ( fileSize / 1024 ).toFixed( 2 ) + ' KB';
}
        else
            document.getElementById( 'fileSize' ).innerHTML = 'Failed to get file size';
    }, false );
}, false );

function getFileSize( inputFile ) {
    var files = inputFile.files;

    if( !files ) {
        //for IE
        try {
            var fs = new ActiveXObject( 'Scripting.FileSystemObject' );
            var file = fs.getFile( inputFile.value );
            return file.size;
        } catch( ex ) {
            return -1;
        }

    } else if( files.length > 0 ) {
        //for rest of the world
        return files[ 0 ].size;
    }
}
当然,您只需要
files.length>0
部分代码,因为您的目标是Safari(不是IE),但我还是发布了全部代码。 添加此脚本后,我可以在iPhone Safari上上传13MB的视频。它被自动压缩,但脚本仍然返回实际的文件大小

请看这里:

试试看,让我知道它是否有效

编辑:如果要将上载文件的最大大小设置为10 MB,请将以下内容添加到代码中:

    if(fileSize > 10485760) {
alert("Your file is too large to be uploaded");
inputImg.value = "";
document.getElementById( 'fileSize' ).innerHTML = "";
}

更新的JS-Bin:

我编辑了答案,其中包含了一个方法,用于在文件超过10 MB时通知用户(您可以将其更改为任何值-以字节为单位)。然而,即使我添加了检查文件大小的代码,它似乎也能正确上传。你自己试试看,如果有用就告诉我。干杯我在iOS上测试了你的jsBin,它对我不起作用。我能看到的唯一区别是,我试图上传一个10mo jpeg文件,而不是视频。因此Safari可能会以不同的方式处理文件类型。用一张图片试试看。例如: