The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"загрузка файла на сервер через HTTP"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"загрузка файла на сервер через HTTP"
Сообщение от andrey emailИскать по авторуВ закладки on 20-Окт-03, 09:59  (MSK)
Встал вопрос по сабжу, сделал форму со всеми прибамбасами, народ из него выбирает файл и отсылает форму, но что то содержимое файла я как то найти не могу что со ввода, что после парсения (что занономерно). Едиственно что пулучается надыбать так это только имя файла, а содежимое где?
как сделать дальше я знаю типа открываем новй файл потом переходим в бинмоде и печатаем содержимое массива (файла) в этот файл.
Вопрос как мне найти содежимое файла
Помогите кто может, нужно пример формы (а то может я там что накуролесил) и как вы содержимое файла парсите (то есть как его выцепить)
Заранее спасибки
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "загрузка файла на сервер через HTTP"
Сообщение от denn emailИскать по авторуВ закладки on 20-Окт-03, 10:25  (MSK)
input type=file
в форме ENCTYPE="multipart/form-data" & METHOD=POST
в противном случае будет передаваться путь, а не содержимое...
ну а потом в масив...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "загрузка файла на сервер через HTTP"
Сообщение от andrey emailИскать по авторуВ закладки on 20-Окт-03, 10:42  (MSK)
>input type=file
>в форме ENCTYPE="multipart/form-data" & METHOD=POST
>в противном случае будет передаваться путь, а не содержимое...
>ну а потом в масив...

Что то я сильно долго парился с этим, теперь если вывести поный ввод с формы, то получается что я вижу его, а если я задаю print $form{'file'}; то ничего не получаю.
Напиши как его запарсить, в массив
я его парсю вот так

   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   @pairs = split(/&/, $buffer);
   foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $form{$name} = $value;
   }


В форме это

<FORM ACTION="адрес скрипта" ENCTYPE="multipart/form-data" METHOD="POST">
Фйло <INPUT TYPE="file" NAME="file" SIZE="30"><br>
<INPUT TYPE="Submit" VALUE="ОК">
</FORM>

дак вот если print $buffer то я его вижу но какая это переменная не пойму.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "загрузка файла на сервер через HTTP"
Сообщение от denn emailИскать по авторуВ закладки on 20-Окт-03, 10:55  (MSK)
>
>   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>   @pairs = split(/&/, $buffer);
>   foreach $pair (@pairs) {
>   ($name, $value) = split(/=/, $pair);
посмотри че в сейчас в $value.
  }
попробуй без этой части
-  $value =~ tr/+/ /;
-  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-  $form{$name} = $value;

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

>так вот если print $buffer то я его вижу
кого?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "загрузка файла на сервер через HTTP"
Сообщение от andrey emailИскать по авторуВ закладки on 21-Окт-03, 09:46  (MSK)
>>
>>   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>>   @pairs = split(/&/, $buffer);
>>   foreach $pair (@pairs) {
>>   ($name, $value) = split(/=/, $pair);
>посмотри че в сейчас в $value.
>  }
>попробуй без этой части
>-  $value =~ tr/+/ /;
>-  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>-  $form{$name} = $value;
>
>так как пробельные и кодировочные символы
>нам не нужны, там поток походу.
>
>>так вот если print $buffer то я его вижу
>кого?

содержимое приаттаченного файла

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "загрузка файла на сервер через HTTP"
Сообщение от andrey emailИскать по авторуВ закладки on 21-Окт-03, 18:42  (MSK)
>>
>>   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>>   @pairs = split(/&/, $buffer);
>>   foreach $pair (@pairs) {
>>   ($name, $value) = split(/=/, $pair);
>посмотри че в сейчас в $value.
>  }
>попробуй без этой части
>-  $value =~ tr/+/ /;
>-  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>-  $form{$name} = $value;
>

Нифига не получается? потому что если сделать print $buffer то пллучается что у него формат дрой ввода не такой как без multipart Не полутися его так парсить, да в принципе у меня даже не получается его парсить с помощью CGI.pl (usr CGI (:standard))
как получиться пришли мне на мыло или сюда

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "загрузка файла на сервер через HTTP"
Сообщение от Dr. Nebula emailИскать по авторуВ закладки on 22-Мрт-04, 00:54  (MSK)
>>>
>>>   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>>>   @pairs = split(/&/, $buffer);
>>>   foreach $pair (@pairs) {
>>>   ($name, $value) = split(/=/, $pair);
....
>Нифига не получается? потому что если сделать print $buffer то пллучается что
>у него формат дрой ввода не такой как без multipart Не
>полутися его так парсить, да в принципе у меня даже не
>получается его парсить с помощью CGI.pl (usr CGI (:standard))
>как получиться пришли мне на мыло или сюда
-------------
Потратил сегодня тоже полдня на эту проблемму.
Все оказалось проще простого - я пользовался тем же парсером что и ты, это из Маслова "Основы..."? :)
Он не годится для разбора картинки.
Используй CGI qw (:standard)
тогда получить картинку в переменную сможешь
my $foto = param ('foto');
и показать ее на странице
так
    print "Content-type:image/gif\n\n";
    binmode(STDOUT);
    while(<$foto>)
    {
     print "$_";
    }
если что - пиши на почту

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру