1

現在、ファイルをアップロードするためのこのコードがあります

<input id='fileBrowse' type='file' style="width:187px;height:20px" class='fileBrowse' onchange="onBrowseFile( this );" />

いくつかのチェックを行うjavascript関数は次のとおりです。

    function onBrowseFile( fb ) {
    var myFSO = new ActiveXObject("Scripting.FileSystemObject");
    var thefile = myFSO.getFile(fb.value);
    if( (thefile.size / 1000000) > maxfilesize) {
        alert( "The size of the files you have tried to drag and drop exceed the maximum allowed. Please drag no more than "+maxfilesize+" MB at a time." );
        return;
    }
    if( fb.value.indexOf( ".exe" ) > -1 ||
            fb.value.indexOf( ".asp" ) > -1 ||
            fb.value.indexOf( ".aspx" ) > -1 ||
            fb.value.indexOf( ".cab" ) > -1 ||
            fb.value.indexOf( ".com" ) > -1 ||
            fb.value.indexOf( ".dll" ) > -1 ||
            fb.value.indexOf( ".java" ) > -1) {
        alert( "The import of one or more files type are not permitted" );
        return;
    }
    document.getElementById( "txtFilePath" ).value = fb.value;
}

問題は、IE9を使用していることです。IE9のセキュリティでは、セキュリティ設定またはレジストリを変更せずにActivexControlを使用することはできません。このアプリケーションのユーザーは5000人いるため、これを行うことはできません。

これを整理するために他に何を使用できるかを提案してください。これらのチェックが必要です...

4

2 に答える 2

0

チェックサーバー側を実行できます。

于 2012-04-12T08:58:34.487 に答える
0

IE9にはHTML5を使用します。

var upload = document.getElementById('fileBrowse');

upload.onchange = function (e) {
  e.preventDefault();
  var file = upload.files[0];
  if( ( file.fileSize) > (2 * 1024*1024) ) {
        alert( "The size of the files you have tried to drag and drop exceed the maximum allowed. Please drag no more than 1 MB at a time." );
        return;
  }
  if( file.name.indexOf( ".exe" ) > -1 ||
        file.name.indexOf( ".asp" ) > -1 ||
        file.name.indexOf( ".aspx" ) > -1 ||
        file.name.indexOf( ".cab" ) > -1 ||
        file.name.indexOf( ".com" ) > -1 ||
        file.name.indexOf( ".dll" ) > -1 ||
        file.name.indexOf( ".java" ) > -1 ) {
        alert( "The import of one or more files type are not permitted" );
        return;
  }
  return false;
};
于 2012-04-12T09:48:10.277 に答える