Открытие файла в локальной файловой системе в 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 );
}