Рекламное место №53
GUI среда для исполения JScript OR VBScript
Upload бинарного файла на сервер средствами JScript

 

 

Загрузка файла на Web сервер

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

Процесс Веб сервера должен иметь право создания файлов в целевой директории (в которую будет записываться бинарник - смотри CGI скрипт), и записи в них, естественно.

  1. Сгенерируем файлик с хэшем пароля, для этого нужно в директории сервера Apache найти утилиту htpasswd, и запустить ее из коммандной строки:
    htpasswd -c password.pwd userName
    Встроенный HELP утилиты:
    Usage:
    	htpasswd [-cmdps] passwordfile username
    	htpasswd -b[cmdps] passwordfile username password
    
    	htpasswd -n[mdps] username
    	htpasswd -nb[mdps] username password
     -c  Create a new file.
     -n  Don't update file; display results on stdout.
     -m  Force MD5 encryption of the password (default).
     -d  Force CRYPT encryption of the password.
     -p  Do not encrypt the password (plaintext).
     -s  Force SHA encryption of the password.
     -b  Use the password from the command line rather 
    than prompting for it. On Windows, TPF and NetWare systems 
    the '-m' flag is used by default. On all other systems, 
    the '-p' flag will probably not work.
    
  2. Установим на Веб сервер "принимающий" CGI скрипт вида:
    #!/usr/bin/perl
    use CGI qw(:standard);
    print header();
    print start_html("File Upload Example");
    
    $length = $ENV{CONTENT_LENGTH}; 
    if ($length < 50000)
    {
    $file = param('file'); 
    $name = scalar $file;
    $name =~ s/.*\\WWW\\/..\//;
    $name =~ s/\\/\//g;
    
    print "<h4> Transfer file: $name</h4>";
    
    open (OUTFILE, ">$name"); 
    binmode OUTFILE; 
    print OUTFILE <$file>; 
    close OUTFILE;
    };
    print end_html;
    Установка заключается в создании директории на Веб сервере, копировании туда файла скрипта и установки на него прав исполнения для процесса Веб - сервера.
  3. Копируем файл созданный утилитой htpasswd в директорию - рядом со скриптом, устанавливаем на него права чтения для процесса Веб - сервера
  4. Создаем в директории скрипта файл .htaccess (путь к файлу пароля настраивайте сами):
    AuthName "For Registered Users Only"
    AuthType "Basic"
    AuthUserFile "/usr/local/www/cgi-protect/password.pwd"
    Require valid-user
    Options +ExecCGI
    

Upload файла с помощью JScript

Теперь нам нужно написать программу "посылающую" файл с Вашего компьютера "в сторону" приемного скрипта. Файлы на отправку должны лежать в директории WWW (где именно Вы ее разместите - Ваше дело).

В Интернете есть код программы на VBScript - вопросы перекладки на JScript решайте сами, или воспользуйтесь объединением в WSF файл, или просто запускайте как внешнюю утилиту с параметрами коммандной строки - думайте, короче.

Код программы, отсылающей файл написан не мной - Вы можете найти его в середине страницы http://www.pstruh.cz/tips/detpg_uploadvbsie.htm. Все вопросы авторского права - на использование этого кода решайте у '2001 Antonin Foller, PSTRUH Software!

Пояснения - при использовании кода fieldname = "file", для отладки раскомментируйте
'IE.Visible = True

Посылает файл - JScript, принимает файл - CGI

Содержание