1

Тема: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

Коллеги,

здравствуйте.

Не могу решить следующую проблему.

1. На Windows7 поднята служба IIS под WEB-сайт.
2. Со страницы сайта нужно писать и читать в обычный txt-файл, который лежит на том же WEB-сервере.
3. Хотелось бы делать это на стороне сервера.
4. Пробовал решить разными способами - пока не получается.

Вот самый первый и самый простой вариант (файл index.htm на сервере в c:\inetpub\wwwroot)

<html>
<head> 
<script language="JavaScript">
 function WriteToFile() {
 try {
  alert("1");
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  alert("2");
  var a = fso.CreateTextFile("\\\\testw7\\c$\\inetpub\\wwwroot\\ForOtzyvy\\testfile.txt", true);
  a.WriteLine("Это проверка.");
  a.Close();
 }
catch(err){
  var strErr = 'Error:';
  strErr += '\nNumber:' + err.number;
  strErr += '\nDescription:' + err.description;
  document.write(strErr);
 }
}
</script>

</head> 
<body onload='WriteToFile();'> 

</body> 
</html>

На сервере создана папка c:\inetpub\wwwroot\\ForOtzyvy.
Папке даны все права доступа для всех пользователей.

При запуске в IE8:
1. Срабатывает alert("1");
2. Затем появляется:
Error: Number:-2146827859 Description:Невозможно создание объекта сервером программирования объектов
3. Запуск обычного скрипта с клиента создает файл на сервере и пишет в него:

  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var a = fso.CreateTextFile("\\\\testw7\\c$\\inetpub\\wwwroot\\ForOtzyvy\\testfile.txt", true);
  a.WriteLine("Это проверка.");
  a.Close();

Чего я не знаю?

2

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

В браузере жёстко ограничена возможность работы с FSO. Попробуйте проверить killbit - Поиск в Google.

3 (изменено: Евген, 2012-12-18 11:29:51)

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

ИМХО, как минимум нужно IP адрес WEB сервера забить в доверенные узлы на клиенте, ну и для зоны доверенных узлов выставить уровень безопасности ниже плинтуса, чтобы такие безобразия разрешать на клиентской стороне...

Времени не хватает... :-(

4

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

alexii пишет:

В браузере жёстко ограничена возможность работы с FSO. Попробуйте проверить killbit - Поиск в Google.

alexii,

спасибо за ссылку - я про это не знал.
Но снимать блокировку работы с FSO на этом уровне - слишком серьезное (и опасное) условие для использования программы.

5

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

Евген пишет:

ИМХО, как минимум нужно IP адрес WEB сервера забить в доверенные узлы на клиенте, ну и для зоны доверенных узлов выставить уровень безопасности ниже плинтуса, чтобы такие безобразия разрешать на клиентской стороне...

Евген,

а вот это помогло - конкретно занесение IP в доверенные узлы.
Уже серьезный шаг вперед.
Спасибо.

Но! У меня получилось только в IE 8.
В том же Chrome получаю все то же самое:
Error: Number:undefined Description:undefined

6

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

Коллеги,

я не случайно в первом посте написал "самый первый вариант".
Уточню: меня бы устроил любой способ чтения-записи в файл на сервере с WEB-страницы.

Вот еще один способ, который позволяет читать - причем без особых условий:

<script language="JavaScript">
function ReadFromFile() {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else {
            // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 0)) {
                alert(xmlhttp.responseText);
            }
        }
        xmlhttp.open("GET","http://10.2.2.223/ForOtzyvy/Otzyvy.txt",true);
        // xmlhttp.overrideMimeType("text/plain;charset=windows-1251"); 
        xmlhttp.send(null);
}
</script>

1. Но тут встретился с проблемой - чтение русских букв.
В закомментированной строке - overrideMimeType - который вроде бы должен решить проблему, но пока не получается.

2. Вопрос как таким способом записывать тоже пока в стадии решения.

7

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

В том же Chrome получаю все то же самое:

Error: Number:undefined Description:undefined

Разве ActiveX работают где-либо ещё кроме IE?

8

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

Slav пишет:

...
1. Но тут встретился с проблемой - чтение русских букв.
В закомментированной строке - overrideMimeType - который вроде бы должен решить проблему, но пока не получается.

C этим немного разобрался - если в обычном Блокноте сохранить текстовый файл в формате UTF-8, то читается и выводится нормально.

9

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

alexii пишет:

Разве ActiveX работают где-либо ещё кроме IE?

            xmlhttp=new XMLHttpRequest();
Забыл пароль и потерял e-mail.

10

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

shiz, я что-то путаю:

На этой стадии необходима отдельная реализация для разных браузеров. Конструкция создания объекта отличается: в IE 5 — IE 6 она реализована через ActiveXObject, а в остальных браузерах (IE 7 и выше, Mozilla, Opera, Chrome, Netscape и Safari) — как встроенный объект типа XMLHttpRequest.

? Или здесь: XMLHTTPRequest: описание, применение, частые проблемы | XmlHttpRequest.ru?

11

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

Для изменений на стороне сервера  (Windows 2003  IIS 6)  можно использовать "classic ASP".

<%@ Language = JScript %>
<% 
var fso = Server.CreateObject("Scripting.FileSystemObject")
var f = fso.OpenTextFile(Server.MapPath("ForOtzyvy\\testfile.txt"), 1)
var aLine=[]
while (!f.AtEndOfStream) {
    aLine[aLine.length] = f.ReadLine()
}
f.close()
%>

12

Re: HTML, Jscript: запись-чтение txt-файла на WEB-сервере

alexii пишет:

shiz, я что-то путаю:

Вероятно, это я неправильно понял смысл вашего замечания.

Забыл пароль и потерял e-mail.