Открытие файла в локальной файловой системе в javascript

Я ищу способ открыть файл.xls, который находится во временном каталоге, используя JavaScript в IE и браузере Firefox. Я попытался использовать JavaScript следующим образом,

function openMe(){
    var newwindow=window.open("file:///{path to temp dir}/names.xls","window2","");
}

Там есть файл names.xls, я его проверил. Поскольку IE 7.0 не позволяет пользователю открывать пустое окно из-за проблем безопасности, я не могу сделать эту работу. Я еще не проверял это с Firefox. Есть ли способ заставить это работать?

Я также попытался иметь empty.html, который имеет этот javascript и вызывал это тело openMe() onLoad. И открываем empty.html из родительского HTML-файла. Все, что я вижу, это новое пустое окно без ничего, но файл не открывается.

Любые указатели будут очень полезны. Спасибо

Ура, Аби

2 ответа

Решение

Извини, Аби, тебе не повезло - ты не можешь использовать JavaScript в браузере, чтобы открыть файл в локальной файловой системе. Это проблема безопасности и имеет смысл, если вы об этом думаете; Вы бы не хотели, чтобы люди писали на своих веб-сайтах сценарии, которые могут обращаться к файлам в вашей локальной файловой системе и, возможно, считывать с них данные!

HTML5 разрешает открывать локальные файлы, пока пользователь компьютера выбирает файлы. Вы сможете найти больше информации об API JavaScript вместе с примером кода о том, как использовать этот API, здесь: http://www.html5rocks.com/en/tutorials/file/dndfiles/

Предлагаю вам использовать AJAX. Далее следует небольшой API.

/* **************************** AJAX ************************** */

///
/// Source
///   http://www.quirksmode.org/js/xmlhttp.html

/// XMLHttpRequestForms is a local auxiliary variable

var XMLHttpRequestForms = 
  [
    function ( ) { return new XMLHttpRequest ( ); },
    function ( ) { return new ActiveXObject ( "Msxml2.XMLHTTP" ); },
    function ( ) { return new ActiveXObject ( "Msxml3.XMLHTTP" ); },
    function ( ) { return new ActiveXObject ( "Microsoft.XMLHTTP" ); }
  ];

// ******************************************* createXMLHTTPObject

// local entry point

/// createXMLHTTPObject is a helper function

function createXMLHTTPObject ( )
  {
  var xmlhttp = false;

  for ( var i = 0; ( i < XMLHttpRequestForms.length ); i++ )
    {
    try
      {
      xmlhttp = XMLHttpRequestForms [ i ] ( );
      break;
      }

    catch ( e )
      {
      continue;
      }
    }

  return (  xmlhttp );
  }

/// ************************************************ read_contents

// global entry point

/// <synopsis>
///   read_contents ( url ) 
///
/// <summary>
///   retrieves the contents of the specified URL
///
/// <param name="url">
///   a string containing the URL whose contents are to be read
///
/// <returns>
///   a string containing the contents of the URL
///
/// <example>
///   var text = read_contents ( "footer.ini" );

function read_contents ( url )
  {
  var request = createXMLHTTPObject ( );

  if ( !request )
    {
    return ( null );
    }

  request.open ( 'GET', url, false );
  request.setRequestHeader ( 'Content-Type', 'text/html' );
  request.send ( );

  return ( request.responseText );
  }
Другие вопросы по тегам