file upload, perl

Elina74



#!/usr/bin/perl
use CGI;
$query = new CGI;
my $upload_dir="/WWW/upload";
my $newfilename = "bla_bla_bla";
my $file_content;
$IN = $query->upload("filename");
open OUT, ">$upload_dir/$newfilename";
while(read($IN, $file_content, 1024{
binmode OUT;
print OUT $file_content;
}
close OUT;


Цель этого скрипта - загрузить некий файл (рисунок) на сервер. Для этого, ему из HTML-формы передается "filename" того самого файла.
Скрипт замечательно работает для текстовых файлов, но для бинарных, например, графических, не работает.
В чем дело? Я посмотрел на многих форумах и сайтах. Почти везде рекомендуют писать так.

VitMix

Возможно ты используешь русский apache. Он любит перекодировать закачиваемые файлы налету (например из koi8-r в windows-1251). Проблему можно решить сказав
CharsetDisable On

Elina74

Создал в папке "upload" файлик ".htaccess" с надписью "CharsetDisable On"
Не помогло. Проверил на текстовом файле. Он действительно перекодирует win1251 в koi8-r...

sergey_m

Удостовериться, что эта опция в .htaccess обрабатывается. httpd.conf может это запрещать.

Elina74

Похоже "CharsetDisable On" надо было писать в той папке, где лежит скрипт...
помогло...

eduard615

ты бы еще бинмоде за вайл вынес, а то не кошерно как-то

Elina74

Угу... проверю, если его достаточно написать один раз, так и сделаю...
Оставить комментарий
Имя или ник:
Комментарий: