Автор Тема: Загрузка файлов на сервер  (Прочитано 8388 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« : 27 Марта 2006, 11:38:58 »
Задача в загрузке 30 или меньше файлов на сервер по хттп,

почему то, файлы создаются на сервере, но не записываются,
где то в приведенном куске ошибка, но я не знаю что копать.
помогите ожалуйста.



for ($j=1; $j<31; $j++) # счетчик
{

if (@file[$j]) # проверка существования файла
{
$file="@file[$j]";
open(UPLOAD, ">/home/apache/hosts/рщые/virtual/temp/$year/$mon/$mday/$file")  || Error();
    my ($data, $length, $chunk);

print $file;

    while ($chunk=read($file, $data, 1024))
{
print "adssdadsadsasd";
print $data;
print UPLOAD $data;

        $length+=$chunk;
     if ($length>$limit) {
     print"превышен лимит загрузки";
       exit;}

close(UPLOAD);

}

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Загрузка файлов на сервер
« Ответ #1 : 27 Марта 2006, 12:09:06 »
perldoc -f read
Цитировать
read FILEHANDLE,SCALAR,LENGTH
               Attempts to read LENGTH characters of data into
               variable SCALAR from the specified FILEHANDLE.
The documentations is your friend

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #2 : 27 Марта 2006, 12:22:20 »
я прочитал перлдок, спасибо

но пример кода то хрестоматийный, должно все работать.
неправильна вот эта строка получается?

($chunk=read($file, $data, 1024))
а как правильно, если именно так написано в книге?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Загрузка файлов на сервер
« Ответ #3 : 27 Марта 2006, 12:45:18 »
if (@file[$j]) # проверка существования файла

Это сильно оптимистическая проверка файла.
if (-e @file[$j])

for ($j=1; $j<31; $j++) # счетчик
Сильно оптимистический счетчик.
$file[0] пропускаем?

Цитировать

кода то хрестоматийный

Это вас обманули. Поищите по этому форуму.
« Последнее редактирование: 27 Марта 2006, 12:57:43 от NeoNox »
The documentations is your friend

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #4 : 27 Марта 2006, 12:52:17 »
у меня вроде все счетчики с 1 просто

искал ведь, :( еще поищу

спасибо за заботу, NeoNox

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Загрузка файлов на сервер
« Ответ #5 : 27 Марта 2006, 12:59:21 »
Цитировать
A.Perez:
у меня вроде все счетчики с 1 просто

А массив вы тоже игнорируя первый элемент заполнили?

Выведите на print значения всех переменных и увидите почему у вас этот кусок не работает.
The documentations is your friend

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #6 : 27 Марта 2006, 13:02:27 »
Цитировать
А массив вы тоже игнорируя первый элемент заполнили?


ну да

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #7 : 27 Марта 2006, 13:08:13 »
if (-@file[$j])

вот эта проверка не проходит. данная переменная содержит имя файла без пути к нему. Мжет в этом дело?
книжка то плюшевая у меня похоже.


for (my $i=0$i<30$i++)
    {
    
my $myfile="url$i";
        @
file[$i]=param($myfile); # получаем имена файлов из параметров 
        
@info[$i]=uploadInfo($myfile);  # это для проверки миме
    
}

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #8 : 27 Марта 2006, 13:21:08 »

Оффлайн Алан

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alanrin.com
Загрузка файлов на сервер
« Ответ #9 : 27 Марта 2006, 13:32:37 »
У каждого, конечно, свои подходы, но почему бы вместо не использовать:

open(FILE, \'\') or die \'\';
binmode(FILE);
while( ) {
$data .= $_;
}
close(FILE);

В $data будет весь ваш файл :) Делайте что хотите :) И никакого read не надо...

Оффлайн Алан

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alanrin.com
Загрузка файлов на сервер
« Ответ #10 : 27 Марта 2006, 13:35:22 »
if (@file[$j]) # проверка существования файла

Насколько мне память не изменяет адресация к элементу массива идёт как $file[$j] тогда будет правельнее

if( -e $file[$j] )

Хотя... могу заблуждаться... *думает: может путаю с указателями... потому как с массивами на прямую давно не работаю... $file->[$j]*

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #11 : 27 Марта 2006, 13:35:36 »
классная тема. счас попробую. спасибо

Оффлайн A.Perez

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 38
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Загрузка файлов на сервер
« Ответ #12 : 27 Марта 2006, 13:38:46 »
Цитировать
open(FILE, \'\') or die \'\';
binmode(FILE);
while( ) {
$data .= $_;
}
close(FILE);


cgi как работает с этим если файл на локальном компьютере?

Оффлайн Алан

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alanrin.com
Загрузка файлов на сервер
« Ответ #13 : 27 Марта 2006, 16:48:17 »
ну блин... я-то думал, что файл уже загружен...
Тогда его сначала загрузить надо :) об этом, кстати, есть хорошая статья тута. Очень хорошая статья. Там и написано как коректно получать параметры и файлы по http :) Или ещё можно средствами модуля CGI это делать... но не советую :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28