Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Perl (http://www.flasher.ru/forum/forumdisplay.php?f=21)
-   -   Нужен скрипт (http://www.flasher.ru/forum/showthread.php?t=32770)

Gosha999 07.06.2002 12:52

Нужен скрипт
 
Нужен скрипт для загрузки файлов на сервер.
Мой работает, но файлы становятся не рабочими.
Только тексты грузит.
А мне надо картинки и зипы грузить.
В чём проблема?

Fouly 08.06.2002 10:27

Поиск на предмет binmode
я где-то отвечал

Gosha999 08.06.2002 20:37

Вложений: 1
Блин всё перепробовал.
непомогает.
Может у меня эксплорер 6 виноват.
Скиньте 100% рабочий скрипт, плиз.

Crazy 08.06.2002 20:53

Ну и что должна была продемонстрировать эта ссылка?

Навскидку я аномалий не нахожу.

Gosha999 08.06.2002 22:08

Даже это не помогло

#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser/;
$num= "4"; #количество загружаемых файлов !
$uploadurl = "/usr/home/archean/img/review"; # полный путь куда сохранять файл
$url = "http://www.archean.ru/img/review/"; # url
print "Content-type: text/html\n\n";
for($i=1;$i<=$num;$i++)
{
if (!param ("filik$i"))
{
print "Файл $i - Не введён!<br>";
}
else
{
my $filik = param ("filik$i");
if ($filik =~ /\//) {
@array = split(/\//, $filik);
$f = pop(@array);
}
elsif ($filik =~ /\\/)
{
@array = split(/\\/, $filik);
$f = pop(@array);}
open (FILE, ">$uploadurl/$f") or mkdir $uploadurl,(0777);
chmod(0644, "$uploadurl/$f");
binmode FILE;
print FILE while (<$filik> );
close FILE;
print "$f - ";
print "<a href=\"$url/$f\">Download</a><br>";
}
}
print "<br><a href=\"$url\">Каталог с файлами...</a>";

Crazy 08.06.2002 23:02

Здесь нет кода формы.

Gosha999 09.06.2002 08:37

Вот форма.

<form action="/cgi-bin/uper.pl" encType="multipart/form-data" method="post">
<input type=file name=filik1>
<input type=file name=filik2>
<input type=file name=filik3>
<input type=file name=filik4>
<input type="submit" name="submit" value="Отправить" >
<form>

Где собака зарыта?
Я уже кучу скриптов проверил, толку нет:(

Crazy 09.06.2002 09:40

Берем описание CGI.pm и видим, что твой код основан на варианте для ТЕКСТОВЫХ файлов. Возьми вариант для двоичных.

Цитата:


When the form is processed, you can retrieve the entered filename by calling param().

$filename = $query->param('uploaded_file');

where "uploaded_file" is whatever you named the file upload field. Depending on the browser version, the filename that gets returned may be the full local file path on the remote user's machine, or just the bare filename. If a path is provided, the follows the path conventions of the local machine.
The filename returned is also a file handle. You can read the contents of the file using standard Perl file reading calls:

Код:

# Read a text file and print it out
while (<$filename>) {
  print;
}

Код:

# Copy a binary file to somewhere safe
open (OUTFILE,">>/usr/local/web/users/feedback");
while ($bytesread=read($filename,$buffer,1024)) {
  print OUTFILE $buffer;
}
close $filename;



Gosha999 09.06.2002 10:24

А для отсталых в развитии нельзя подробнее объяснить, плиз.

Crazy 09.06.2002 13:42

Ты читаешь файл как текстовый (конструкцией <>). Нужно читать как двоичный (функцией read). Пример кода приведен.


Часовой пояс GMT +4, время: 22:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.