Справочник функций

Ваш аккаунт

Логин:
Пароль:
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
Убрать блок ВКонтакте навсегда

Последние темы форума

Показать новые сообщения »

Почтовая рассылка



Подписчиков: 19017
Последний выпуск: 23.04.2012

Создание файлов при помощи JavaScript и VBScript

Алексей Голубев http://www.frnet.narod.ru/

1. Создание пустого файла

На первый взгляд эта функция может показаться бесполезной, однако, как вы занесете данные в файл, не имея самого файла, не будем же мы портить фалы посетителя нашей страници.

Для того, чтобы создать пустой файл с помощью VBSctipt надо написать в HTML-файле следующий код:

<script language="VBScript">
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
</script> 

Ту же самую функцию выполняет и следующий код, написанный уже на JavaScirpt:

<script language="JavaScript">
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
</script>
Вот теперь, создав чистый файл, можно приступить к его заполнению... 

2. Запись данных в файл

Открытие файла. Для того, чтобы открыть файл надо применить следующий скрипт:

Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True) 

Данный скипт написан на VBScript. Здесь по-моему все понятно. ForWriting - флаг, показывающий зачем открывать файл. Вот тот же скрипт на JavaScript:

var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true); 

Надо отметить, что при этом файлы будут автоматически создаваться.

Непосредственная запись в файл. Для занесения строчек текста в файл используется следующие методы:

ЗадачаМетод
Вставка новой строки, с последующей возможностью добавления в этуже строку данных, т.е. в конце строки нет символов переноса строки и возврата каретки. Write
Вставка новой строки с переносом на следующую. WriteLine
Вставка одной или несколких пустых строк.WriteBlankLines

Вот примеры скриптов. На VBScript:

Sub CreateFile()
  Dim fso, tf
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set tf = fso.CreateTextFile("c:\testfile.txt", True)
  ' Вставка строки с переносом на новую.
  tf.WriteLine("Testing 1, 2, 3.") 
  ' Вставка 3 путых строк.
  tf.WriteBlankLines(3)
  ' Вставка новой строки, без переноса.
  tf.Write ("This is a test.") 
  ' Закрытие файла.
  tf.Close
End Sub

На JavaScript:

function CreateFile()
{
  var fso, tf;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  tf = fso.CreateTextFile("c:\\testfile.txt", true);
  // Вставка строки с переносом на новую.
  tf.WriteLine("Testing 1, 2, 3.") ;
  // Вставка 3 пустых строк.
  tf.WriteBlankLines(3) ;
  // Вставка новой строки, без переноса.
  tf.Write ("This is a test.");
  ' Закрытие файла.
  tf.Close();
} 

Вот и все. Что с этим делом делать, вы наверное уже знаете. В мирных целях эта возможность создавать файлы на клиентских машинах очень полезна. Можно предложить посетителю скачать ваш фирменных значок и установить его в кчестве значка дика C, D, E, F, ..., Z. Можно создать autorun для диска X, в котором будет прописана строка, которая позволит загружать ваш фирменный сайт при запуске этого диска. Сохранение настроек без использования cookies и т. д. и т.п. На этой оптимистической ноте я заканчиваю.

Спасибо за внимание.

Оставить комментарий

Оставлять комментарии могут только зарегистрированные пользователи.

Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.

Комментарии

1. uint32 / 28 мая 2008, 00:48:30
Мне нравитсяМне не нравится

Извиняюсь. Оказывается для предыдущего примера расширение не обязательно.

Нашел еще код для оперы:
Код:
var s = new java.io.PrintStream(new java.io.FileOutputStream(operaUrlToFilename(filePath)));

 s.print(content);

 s.close();


Методы приведенные в примерах - свои для каждого браузера. Тот, что приводится в статье, годится только для ie.

2. uint32 / 27 мая 2008, 23:47:10
Мне нравитсяМне не нравится

Нашел способ, как создавать файлы из Firefox(без всякого ActiveX)

Надо установить расширение:
http://downloads.mozdev.org/jslib/xpi/signed/jslib_current_signed.xpi

Код такой:

Код:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");



 try {

   var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);



   //проверяем ОС

   if(navigator.userAgent.indexOf("Win") != -1)

   {file.initWithPath("c:\\foo.dat");}

   else

   {file.initWithPath("/foo.dat");}



   if (!file.exists())

     file.create(file.NORMAL_FILE_TYPE, 0644);



   var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);

   var uri = ioService.newFileURI(file);

   var channel = ioService.newChannelFromURI(uri);

   var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);



   outputStream.init(file, 0x20|0x02, 00004, null);

   var buffer = "This is a test\n";



   outputStream.write(buffer, buffer.length);

   outputStream.flush();

   outputStream.close();

 } catch (e) { document.write("<html><body>err"); }

3. blind rain / 06 декабря 2005, 08:21:27
+1 / -0
Мне нравитсяМне не нравится

duke_nukem

Цитата:
...а при запуске из и-нета ваще молча ничего не делает (при настройках безопасности "по умолчанию")..


что касается настроек "по умолчанию", то доверяй - но проверяй. Где и что - для конкретно этого случая - я написал.

skunk
<blockquote><small>Цитата:<hr size=1>причем тут ActiveX ни как не пойму...[/quote]
Ну а чем по-Вашему файл пишется? Поддержка скриптов в браузерах пощипанная на такие вещи. ActiveX компонент Scripting.FileSystemObject в общем-то для внутренних административных нужд в основном используется, у него и флаг внутрях - что небезопасный он. Но если пользователь по глупости (или по рекомендации "доброжелателя" на каком нибудь ресурсе для "лучшего" отображения содержимого страниц) включит себе настройки по запуску ActiveX в зоне Internet - то вообще все что угодно с его машиной сделать можно.

4. duke_nukem / 06 декабря 2005, 06:35:38
Мне нравитсяМне не нравится

ActiveX тут почти ни причем...
...бесполезность (и не только на первый взгляд) этого поста в том, что при запуске этого кода с локальной страницы (с жесткого диска) выскакивает предупреждение о небезопасной операции, а при запуске из и-нета ваще молча ничего не делает (при настройках безопасности "по умолчанию")...

5. skunk / 05 декабря 2005, 19:40:55
Мне нравитсяМне не нравится

blind rain

причем тут ActiveX ни как не пойму...

6. blind rain / 05 декабря 2005, 13:32:59
+2 / -0
Мне нравитсяМне не нравится

Вывод: запрещайте в настройках безопасности браузера использование (а также закрузку и запуск) неподписанных ActiveX элементов, а лучше - вообще всех ActiveX элементов для зоны интернет, если не хотите, чтобы каждый "в мирных целях" имел ваш "винт" как свой собственный...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог
мобильные здания со сборкой , Firefox скачать