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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка файла на сервер (upload) filefield, до загрузки надо открыть доступ к файлу! 
V
    Опции темы
DigitSphinx
  Дата 1.7.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



OS:windows VISTA 
Server: IIS7
собственно проблема : следующий код корректно загружает файлы на сервер (долго мучался с binmode но вроде уже работает!)

Код

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use CGI;
$q = new CGI();
print $q->start_html;
$FullPath = $q->param('FileName');

if ($FullPath)
{
        @buf = split(/\\/,$FullPath);
        $FileName = $buf[$#buf];
        print "Full Path is : $FullPath<br>File Name is : $FileName<br>";

        $numbytes = 1024;

        open(INPUTFILE, "<$FullPath") or die "ERROR OPENING INPUTFILE($FullPath) $!";
        open(OUTPUT, ">Uploaded\\$FileName") or die "ERROR OPENING OUTPUT FILE $!";
        if (-B $FullPath)
        {
                binmode OUTPUT, ':raw';
                binmode INPUTFILE, ':raw';
                print "THIS IS BINARY FILE<br>";
        }
        elsif(-T $FullPath)
        {
          binmode OUTPUT, ':crlf';
                 binmode INPUTFILE, ':crlf';
                 print "THIS IS TEXT FILE<br>";
        }
        else
        {
                die "<br>ERROR NOT BINARY NOR TEXT FILE Oo<br>";
        }

        while ($bytesread = read(INPUTFILE, $buffer, $numbytes))
        {
                print OUTPUT $buffer or die "ERROR WRITING $!";
        }
        print "<br>File uploaded" ;
        close (OUTPUT);
        close (INPUTFILE);
}
else
{
        print $q->start_multipart_form(-method=>'post',-action=>'index.cgi');
        print $q->filefield(-name=>'FileName');
        print "<br>";
        print $q->submit("Send File");
}
print $q->end_html;



но если предварительно не открыть доступ к файлу который я выбираю в браузере (доступ для everyone с полными правами) то файл не загружается на сервер со следующей ошибкой

Код

Full Path is : C:\Users\QAQC2\Desktop\NDT Request 01-07-10.xlsx
File Name is : NDT Request 01-07-10.xlsx
Status: 500 Content-type: text/html 
Software error:
Permission denied ERROR OPENING INPUTFILE(C:\Users\QAQC2\Desktop\NDT Request 01-07-10.xlsx)! at C:\inetpub\wwwroot\index.cgi line 16.
For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. 


на многих сайтах есть uploader'ы но мня никогда раньше не просили открыть доступ к файлу )))) так что думаю что-то с кодом не так !

по поводу браузера, этот код не работает на opera mozilla и т.д. а работает только на эксплорере и то версии до Висты максимум !
на других браузерах не отображается полный путь к файлу а только имя файла !


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Jimy
Дата 4.7.2010, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 3



строка 16 вообще не нужна
а в строке 35
вместо
Код

 while ($bytesread = read(INPUTFILE, $buffer, $numbytes))

пишите  
Код

while ($bytesread = read($FullPath, $buffer, $numbytes))


для использования binmode для загружаемого файла указывайте
Код

binmode(STDIN)



Это сообщение отредактировал(а) Jimy - 4.7.2010, 09:42
PM   Вверх
DigitSphinx
Дата 5.7.2010, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 3



 smile  Спасибо !


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


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

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


 




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


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

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