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

Ваш аккаунт

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

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

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

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

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

Создание файлов при помощи 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 и т. д. и т.п. На этой оптимистической ноте я заканчиваю.

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

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
37K
15 марта 2008 года
uint32
2 / / 15.03.2008
Мне нравитсяМне не нравится
28 мая 2008, 00:48:30
Извиняюсь. Оказывается для предыдущего примера расширение не обязательно.

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

 s.print(content);

 s.close();


Методы приведенные в примерах - свои для каждого браузера. Тот, что приводится в статье, годится только для ie.
2.
37K
15 марта 2008 года
uint32
2 / / 15.03.2008
Мне нравитсяМне не нравится
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.
Аноним
+1 / -1
Мне нравитсяМне не нравится
6 декабря 2005, 08:21:27
duke_nukem

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


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

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

4.
Аноним
Мне нравитсяМне не нравится
6 декабря 2005, 06:35:38
ActiveX тут почти ни причем...
...бесполезность (и не только на первый взгляд) этого поста в том, что при запуске этого кода с локальной страницы (с жесткого диска) выскакивает предупреждение о небезопасной операции, а при запуске из и-нета ваще молча ничего не делает (при настройках безопасности "по умолчанию")...
5.
Аноним
Мне нравитсяМне не нравится
5 декабря 2005, 19:40:55
blind rain

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

6.
Аноним
+7 / -0
Мне нравитсяМне не нравится
5 декабря 2005, 13:32:59
Вывод: запрещайте в настройках безопасности браузера использование (а также закрузку и запуск) неподписанных ActiveX элементов, а лучше - вообще всех ActiveX элементов для зоны интернет, если не хотите, чтобы каждый "в мирных целях" имел ваш "винт" как свой собственный...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог