Загрузка файла на Web сервер
Сначала подумаем о вопросах безопасности при реализации такой передачи файлов - установим на каталог CGI, в котором будет лежать принимающий файл скрипт, доступ по паролю (что не имеет отношения к JScript, но не менее важно). Всю ответственность за создание "дырки" в защите сервера - Вы несете сами, я выкладываю эту статью исключительно в учебных целях. Паранойя приветствуется у CGI программистов - не забывайте.
Процесс Веб сервера должен иметь право создания файлов в целевой директории (в которую будет записываться бинарник - смотри CGI скрипт), и записи в них, естественно.
- Сгенерируем файлик с хэшем пароля, для этого нужно в директории сервера 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.
- Установим на Веб сервер "принимающий" 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;
Установка заключается в создании директории на Веб сервере, копировании
туда файла скрипта и установки на него прав исполнения для процесса Веб - сервера.
- Копируем файл созданный утилитой htpasswd в директорию - рядом со скриптом, устанавливаем на него права чтения для процесса Веб - сервера
- Создаем в директории скрипта файл .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
|