Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает закачка картинок 
:(
    Опции темы
rcdimon
Дата 4.4.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Почему не ясно. ВОт кодец.

Код

#!/usr/bin/perl

use CGI qw(:all);

###########################################################################
# 
# 
#                                                                         #
########################################################################### 

##############################################################################
##        Объявление некоторых констант                    ##

    $root_path    =    "../cgi-bin";
    $docs_path    =    "../www";


##############################################################################

dbmopen(%a, "$docs_path/hash/admin_pass",0644);
dbmopen(%gal, "$docs_path/hash/galery",0644);


print header( -charset => 'Windows-1251' );


$login_        =    param('login');
$pass_        =    param('pass');
$razdel_    =    param('razdel');
$first_        =    param('first');
$photo_        =    param('photo');










open(MF,"$docs_path/pages/contact_info.txt");
    @contact_info = <MF>;
close (MF);



if ($a{$login_} eq $pass_ and $login_ ne "" ){

            
if ($photo_ ne ""){##############################

opendir MD,"$docs_path/teh/galery/";
    @list = readdir MD;

    foreach $temp (@list){
        if ($temp ne "." and $temp ne ".."){
            
        }
    }


closedir MD;

open (MFD, "$docs_path/teh/galery/$razdel_/number.txt");
    $name_ = <MFD>;
close (MFD);

if ($name_ eq ""){$name_ = "1";}

open (MFD, ">$docs_path/teh/galery/$razdel_/number.txt");
    $name_++;
    print MFD "$name_";
close (MFD);


    $downpath = "$docs_path/teh/galery/$razdel_/"; 
    $file_name_ = "$name_.jpg";
    $in = param('photo');

print "$in";

    open(OUT,">$downpath/1.jpg"); 
    binmode(OUT); 
    while (<$in>) {print OUT $_;} 
    close(OUT); 
} else {
#########################################333

        open(MF,"$docs_path/pages/admin_design1.txt");while (defined($te=<MF>)){
            $te =~ s/<!--admin_data-->/pass=$pass_&login=$login_/gim;
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);

            $title = "Закачка фотографии";
            $letter= "<center>Фотография не была загружена на сервер</center>";
            
        open(MF,"$docs_path/pages/msg.txt");while (defined($te=<MF>)){
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--data-->/$letter/gim;
            $te =~ s/<!--title-->/$title/gim;
        print $te;}close (MF);

            print "\<html\>\<head\>\<meta http-equiv=\"refresh\" content=\"4\; url=admin.cgi?login=$login_&pass=$pass_&page=5\"\>\<\/head\>\<\/html\>";

        open(MF,"$docs_path/pages/design2.txt");while (defined($te=<MF>)){
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);
exit(0);
}
                #############################

            
        open(MF,"$docs_path/pages/admin_design1.txt");while (defined($te=<MF>)){
            $te =~ s/<!--admin_data-->/pass=$pass_&login=$login_/gim;
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);

            $title = "Закачка фотографии";
            $letter= "<center>Фотография успешно закачена</center>";
            
        open(MF,"$docs_path/pages/msg.txt");while (defined($te=<MF>)){
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--data-->/$letter/gim;
            $te =~ s/<!--title-->/$title/gim;
        print $te;}close (MF);
            print "\<html\>\<head\>\<meta http-equiv=\"refresh\" content=\"2\; url=admin.cgi?login=$login_&pass=$pass_&page=5\"\>\<\/head\>\<\/html\>";

        open(MF,"$docs_path/pages/design2.txt");while (defined($te=<MF>)){
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);

} else {

        open(MF,"$docs_path/pages/admin_design1.txt");while (defined($te=<MF>)){
            $te =~ s/<!--admin_data-->/pass=$pass_&login=$login_/gim;
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);
            
            print "Неверная пара логин- пароль";

        open(MF,"$docs_path/pages/design2.txt");while (defined($te=<MF>)){
            $te =~ s/<!--img_path-->/\//gim;
            $te =~ s/<!--contact_info-->/@contact_info/gim;
            $te =~ s/<!--news-->/news/gim;
            $te =~ s/<!--opros-->/opros/gim;
        print $te;}close (MF);
}


smile
PM MAIL ICQ   Вверх
Phoinix
Дата 4.4.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 16.11.2004
Где: Moskau

Репутация: 1
Всего: 2



rcdimon

Честно говоря, мне тоже... ковыряться в коде не особо охота, тем более что этого не достаточно

Что в неправильно закаченном файле? Файл то создается...
Что в логах ошибок?
Какой enctype формы?
PM WWW ICQ   Вверх
rcdimon
Дата 5.4.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Создается файл с нужным именем, но пустой.
PM MAIL ICQ   Вверх
korob2001
Дата 5.4.2005, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Код

while ( read( $in, my  $buff, 1024)  ) {print OUT $buff;} 

А ещё лучше так:
Код

print OUT $buff while ( read( $in, my  $buff, 1024)  );

Удачи.

Это сообщение отредактировал(а) korob2001 - 5.4.2005, 11:59


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Phoinix
Дата 5.4.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 16.11.2004
Где: Moskau

Репутация: 1
Всего: 2



korob2001

Это, боюсь не поможет. И код у него правильный, хоть и "корявый"

Остается одно:

rcdimon

На первый вопрос ты ответил, а на остальные два? особенно на третий:

Цитата(Phoinix @ 4.4.2005, 14:11)
Какой enctype формы?


Ибо ошибка наверняка кроется в нем...
PM WWW ICQ   Вверх
korob2001
Дата 5.4.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

Это, боюсь не поможет. И код у него правильный, хоть и "корявый"

Не поможет, но бинарник лучше читать частями, да и не только бинарник. smile Код, правда какой-то странный. smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 7.4.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Люди.... Не бейте... Простите плз. Извиняюсь. Я дурак я знаю. Но руки из жопы НЕ РАСТУТ. Так что не говорите smile

enctype- Все тут. Оказывается я когда изменял страничку зачем то удалил этот параметр. Пиво с меня причетается.

Цитата
Это, боюсь не поможет. И код у него правильный, хоть и "корявый"


Я глубоко убежден, что программист обязан писать не только работающие программы, но и крассивые. Поэтому мне очень интересно выслушать в чем именно по вашему мнению состоит корявость моего кода. Если это выходит за рамки данного топика, то прошу не полениться и написать мне либо в приват либо на мыло neweb-design<Собака>yandex.ru

Заранее благодарен. smile
PM MAIL ICQ   Вверх
korob2001
Дата 8.4.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



rcdimon - хорошим стилем считается не красивый код, а максимально понятный для чтения. Хотя это конечно же твоё дело, как хочешь, так и пиши. Просто может случиться так, что когда-нить тебе прийдётся работать в группе программистов, вот тут-то они и будут разгадывать красоту твоего кода.

Например:
Зачем писать while после точки с запятой???
Почему не читаешь файл частями???
Зачем читать содержимое всего каталога в массив, а потом циклически проходить по всему массиву???
Обясни назначение этого цикла:
Код

foreach $temp (@list){
        if ($temp ne "." and $temp ne "..") {
            
        }
}

Что он делает???

ЗЫ: Только не подумай, что я горел желанием придраться к тебе или твоему коду. Ты попросил, я ответил.

Это сообщение отредактировал(а) korob2001 - 8.4.2005, 16:00


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rcdimon
Дата 12.4.2005, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



За ответ спасибо.

В этом коде (про который ты спросил) есть массв. В нем список файлов и папок каталога. На самом деле в этом каталоге будут только файлы, другова там храниться не будет. Мне нужно обработать все файлы. На в списке есть еще каталоги с именами . и .. они мне естественно не нужны. Вот я их и выкидываю.

А по поводу while- БЫВАЕТ! smile
PM MAIL ICQ   Вверх
korob2001
Дата 13.4.2005, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

В этом коде (про который ты спросил) есть массв. В нем список файлов и папок каталога. На самом деле в этом каталоге будут только файлы, другова там храниться не будет. Мне нужно обработать все файлы. На в списке есть еще каталоги с именами . и .. они мне естественно не нужны.

Читай из каталога сразу то, что нужно и отбрасывай, что не нужно. Замени этот код:
Код

opendir MD,"$docs_path/teh/galery/";
    @list = readdir MD;

    foreach $temp (@list){
        if ($temp ne "." and $temp ne ".."){
            
        }
    }
closedir MD;

на такой и буде уже легче:
Код

my @list;
opendir MD,"$docs_path/teh/galery/" or die $!; #Всегда делай проверку
  while ( my $temp = readdir MD ) {
              next if /^\.{1,2}$/; # Пропустим текущий и родительский каталог
              push( @list, $temp );
   }
closedir MD;

Если тебе нужно просто вывести или обратотать каждый файл, то может не стоит читать содержимое всего каталога в память??? Я просто так и не понял, где используется массив @list.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.2127 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.