Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Закачка файлов

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

LamerX

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как сдулать нормальный загрузчик файлов на Perl'e - скоко я не видал, все то строки обрывают, то одни текстовые делают, а некоторые, во т как это, вообще не работают:
$upfile=$FORM {'entry'};  #Имя загружаемого файла.
$destfile=$upfile; #Имя,под которым он будет записан в каталог назначения.
#$destdir="/home/upload";  #Имя каталога для загрузки.
#chdir ("$destdir");
 
#Отбрасываем путь,оставляя только имя.
$destfile=~s/\w+//;
$destfile=~s/([^\/\\]+)$//;
$destfile=$1;
 
#Далее записываем файл в каталог назначения.
open(FILE, ">$destdir/$destfile");   #Открываем на запись новый файл.
binmode FILE;                        #Устанавливаем бинарный режим.
print FILE $upfile;                  #Записываем в него содержимое загруженного файла.
close(FILE);                         #Закрываем файл.
 
Помгите, плз!

Всего записей: 200 | Зарегистр. 09-06-2002 | Отправлено: 06:57 15-07-2002
Haze



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LamerX
 
Ты хотя бы посмотрел для начала каким образом идет передача multipart форм... Там ничего сложного нет, просто надо нормально сесть и посмотреть, как там все устроено... Ну а если желания никакого нет, то use CGI

----------
Прибалтам сюда! http://www.baltic.ee

Всего записей: 470 | Зарегистр. 20-05-2001 | Отправлено: 10:33 15-07-2002
Zapadlo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Иногда бывают проблемы с перекодировкой, я часто сталкивался с этим
Описание проблемы  
При загрузке на сервер бинарных файлов (изображений, архивов, программ и т.п.) с помощью cgi- или php-скриптов информация в них искажается, если не принять специальных мер.  
 
Источник проблемы  
На сервере используется "Русский Apache", который по умолчанию перекодирует все принимаемые данные из множества русских кодировок в одну стандартную (например windows-1251). В отношении текстовой информации это снимает довольно большое число проблем, однако взамен порождает проблему с данными, которые не являются обычным текстом.  
 
Способы решения  
Нужно создать в каталоге, где лежит скрипт, файл .htaccess и поместив в него директивы, отключающие перекодировку. Например такие:  
 
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
</IfModule>
 
    CharsetRecodeMultipartForms управляет перекодировкой данных, отправляемых из html-формы в формате multipart/form-data (который и применяется для загрузки файлов на сервер с помощью html-формы).  
 
    IfModule - это на случай, если Ваш проект будет переноситься на обычный Apache.  
 
    Вместо "CharsetRecodeMultipartForms off" можно использовать "CharsetDisable on" - тогда "русскость" Apache будет отключена "по-максимуму".  
 
Если нужно отключить перекодировку выборочно - только для некоторых скриптов в данном каталоге, - вставьте описанные выше директивы внутрь директивы <Files> или <FilesMatch>  
 
Учитывайте, что если в форме, данные из которой принимает скрипт с отключенной перекодировкой, есть текстовые поля, то в случае необходимости перекодировать их Вам придется самостоятельно.  
 

Всего записей: 114 | Зарегистр. 12-05-2002 | Отправлено: 16:09 17-07-2002
OLEX



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#!/usr/bin/perl -w
 
use CGI;
$CGI::POST_MAX=1024 * 48; # Максимум - 48К
$in = new CGI;
 
$file = $in->param('file');
 
$upload_dir = "/путь/";  
 
$filename=$file;
$filename=~s(^.*\\)();# для винды
 
 
if (! $filename) {&Error('Bad File Name')}
if (-e "$filename") {&Error('File Already Exist')}
 
 
binmode($file);  
open (OUTFILE, ">$upload_dir/$filename") or die $!;
binmode OUTFILE;
while ($bytesread=read($file,$buffer,1024)) {
        print OUTFILE $buffer;
}
close OUTFILE;
 
$size = ((stat "$upload_dir/$filename")[7]);
    (-e "$filename") ?
        &ResutPage("$filename : Upload_Succes<br>File size: $size", $_) :
        &Error('FATAL ERROR');
 
exit;
 
=========================================
 
ФОРМА:
 
<FORM METHOD="POST" ACTION="cgi-bin/upload.cgi" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="file">
<INPUT TYPE="submit" VALUE="OK
</FORM>


----------
Отче Наш, иже еси в моем PC. Да святится имя и расширение Твоё. ENTER.

Всего записей: 3590 | Зарегистр. 09-07-2002 | Отправлено: 07:43 11-08-2002 | Исправлено: OLEX, 07:51 11-08-2002
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Закачка файлов


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru