|
|
|||||
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
Upload file
Помогите написать скрипт для загрузки файлов пользователей на сервер.
__________________
С вами был -=Xel'[Naga] |
|
|||||
Написать или дать?
subj
Если написать - то поможем, а если дать - то поишите где нибудь, например на cgi.ru
__________________
Флэш - это искусство(читай издевательство) |
|
|||||
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
Мне надо помочь написать.
Вот допусти скрипту посылаются данные: filename=c:\1\1.zip Т.е. путь к файлу. Как мне в перле сохранить файл 1.zip по адресу ftp://127.0.0.1/recycled/1.zip? И как определить ИМЯ ФАЙЛА, а не путь к файлу?
__________________
С вами был -=Xel'[Naga] |
|
|||||
блин, подумать надо, никогда аплоудом не занимался
можно выживить имя файла из пути с помощью регулярных выражений можно в хтмл'ке написать поле ввода имени файла, для сохранения... Это удобно. например, имя закачиваемого файла some.txt пользователь хочет чтобы этобыл some.html очень удобно и просто
__________________
Флэш - это искусство(читай издевательство) Последний раз редактировалось Хрюндик; 10.01.2002 в 13:29. |
|
|||||
извини- плохо знаю Перл (как-то все больше РНР) поэтому могу помочь только со сылками тут почти все о перле - книги Орейли
но я думаю, в Перле есть что-то наподобие $file_type и $file_name, который выдают имя и тип файла...
__________________
С уважением, Алексей |
|
|||||
Регистрация: Dec 1999
Сообщений: 258
|
Ну вот ты получил файл:
$bin = $query->param('bin'); в $bin содержится имя файла (вместе с путем к нему на локальной машине, в зависимости от броузера). и одновременно $bin является дескриптором загружаемого файла. Вытащить имя файла из пути можно так @file = split /\\|\//,$bin; в последней ячейке масива @file содержится имя файла т.е. $filename = $file[$#file] теперь определяешь куда скачивать файл $upload = "/path/to/folder/$filename"; и пишешь туда файл: open OUTFILE, ">$upload" || die "Can't upload $upload"; binmode OUTFILE; while ($bytesread=read($bin,$buffer,1024)) { print OUTFILE $buffer } close OUTFILE; Пишу на память, так что могу ошибиться. Последний раз редактировалось Fouly; 11.01.2002 в 04:34. |
|
|||||
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
$host="http://127.0.0.1";
... if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'}); } else { $bufer=$ENV{'QUERY_STRING'}; } #End ------------------------- @pairs = split(/&/, $bufer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $param{$name} = $value; } ... $filename=$param{file}; ... @file = split /\\|\//,$filename; $fname = $file[$#file]; $upload="$host/recycled/$fname"; open OUTFILE, ">$upload" || die "Can't upload $upload"; binmode OUTFILE; while ($bytesread=read($filename,$buffer,1024)) { print OUTFILE $buffer; } close OUTFILE; ... Нифига не получается. Файл не загружается и ошибки нет. Что тут не правильно?
__________________
С вами был -=Xel'[Naga] Последний раз редактировалось Xel'[Naga]; 11.01.2002 в 09:09. |
|
|||||
1. Вот это:
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'}); } else { $bufer=$ENV{'QUERY_STRING'}; } #End ------------------------- @pairs = split(/&/, $bufer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $param{$name} = $value; } сотри нафиг и поставь вместо только use CGI; 2. $upload="http://127.0.0.1/recycled/$fname"; Где ты видел, чтобы по протоколу http открывались файлы на запись??? Путь должен быть для файловой системы и относительно скрипта: $upload="/recycled/$fname"; $upload="c:/recycled/$fname"; $upload="../../recycled/$fname"; и т.п. 3. Для того, чтобы браузер отправил на сервер сам файл, а не только его имя, нужно в форме с <input type="file" ...> обязательно вставить: <form ... enctype="multipart/form-data">
__________________
Two beer or not two beer?... |
|
|||||
Регистрация: May 2001
Адрес: Зеленогорск
Сообщений: 47
|
Теперь появилась другая проблема.;[
Файл создается, но вот внутри у него пусто. Т.е. вешает он 0 байт. Помогите плз.
__________________
С вами был -=Xel'[Naga] |
|
|||||
Надо сделать переключение на binary, если в виндовсе тестишь...
binmode $варибла с файлом
__________________
Флэш - это искусство(читай издевательство) |
Часовой пояс GMT +4, время: 18:32. |
|
« Предыдущая тема | Следующая тема » |
|
|