Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Скрипт отдачи файлов. Отдача файла из папки выше корня. Perl

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mgate.Ru



Зарегистрирован: 26.11.2008
Сообщения: 3

СообщениеДобавлено: Ср Ноя 26 2008 17:28    Заголовок сообщения: Скрипт отдачи файлов. Отдача файла из папки выше корня. Perl Ответить с цитатой

Приветствую Уважаемые!

Подскажите кто может сталкивался.

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

Маленький скрипт на Perl, который их отдает через application/octet-stream:

Код:

#!c:\perl\bin\perl 

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

$DIR_ARH = "f:/photo/";
$real_name = "dsc06060.jpg"; #реальный файл выше корня
$file_name = "dsc06060_b.jpg"; #имя файла при сохранении


print "Content-type: application/octet-stream \n";
print "Content-Disposition: attachment; filename=$file_name \n\n";                                                                                                                                                                                 

open (INX, "$DIR_ARH/$real_name") or die "cant open file!";
         binmode (INX);
         print <INX>;
close(INX);

exit;
#############################################


Так вот засада в следующем, если скрипт работает под *nix нет проблем предлагается сохранить файл и он сохраняется.

Но вот когда он работает под win, то после сохранения этого файла, файл оказывается битым.

Путем сраврения содержимого исходного файла и нового, выяснилось, что в новый файл дописывается 0D перед 0A в конце каждой строки.

Похоже что binmode не работает, и не говорит Perlу что файл нужно бинаром читать, а продолжает его читать текстом и портит.

Как от этого избавиться и победить это под win?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bad Lamer



Зарегистрирован: 23.09.2004
Сообщения: 61

СообщениеДобавлено: Сб Ноя 29 2008 14:22    Заголовок сообщения: Ответить с цитатой

Попробуйте добавить binmode STDOUT; после binmode (INX);

Код:

#!c:\perl\bin\perl

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

$DIR_ARH = "f:/photo/";
$real_name = "dsc06060.jpg"; #реальный файл выше корня
$file_name = "dsc06060_b.jpg"; #имя файла при сохранении


print "Content-type: application/octet-stream \n";
print "Content-Disposition: attachment; filename=$file_name \n\n";                                                                                                                                                                                 

open (INX, "$DIR_ARH/$real_name") or die "cant open file!";
         binmode (INX);
         binmode STDOUT;
         print <INX>;
close(INX);

exit;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mgate.Ru



Зарегистрирован: 26.11.2008
Сообщения: 3

СообщениеДобавлено: Вс Ноя 30 2008 17:18    Заголовок сообщения: Ответить с цитатой

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

СПАСИБО!

Куда выслать пива?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Bad Lamer



Зарегистрирован: 23.09.2004
Сообщения: 61

СообщениеДобавлено: Вс Ноя 30 2008 18:57    Заголовок сообщения: Ответить с цитатой

Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...