Загрузка файла RTF в PHP и проблемы с UTF - PullRequest
1 голос
/ 15 января 2010

Я хочу создать веб-форму, которая позволит пользователю загружать текстовые / RTF-файлы в UTF-8, имеющие контент на иностранном языке, используя PHP, а затем выполнять серию команд для него с помощью функции exec (). После этой обработки я возвращаю ее пользователю для загрузки.

Я сделал элементарную форму в html с формой ввода файла и кнопкой отправки. и сторона PHP имеет следующее содержимое.

$base_dir = './uploads';
$cmd = "mkdir -p ".$base_dir.' ; mv -v '.$_FILES['file']['tmp_name'].'$_/'.$_FILES['file']['name'].' ; /var/www/cgi-bin/test.awk'.'/var/www/html/uploads/'.$_FILES['file']['name'].'>'.'/var/www/html/uploads/'.$_FILES['file']['name'];
exec($cmd);
print '<a href="http://oceanfizz.usc.edu/uploads/'.$_FILES['file']['name'].'">download file </a>';

Но проблема в том, что загруженные файлы RTF, похоже, имеют текстовые изменения в основном как

так "он стал и так далее.

Я думаю, что это проблема с кодировкой

Может ли кто-нибудь предложить быстрый и простой способ загрузки файлов на сервер и возврата обработанных файлов через браузер с одновременным сохранением кодировки и содержимого.

Ответы [ 2 ]

1 голос
/ 15 января 2010

Перемещение файлов с помощью внутренней команды Unix не очень умно.Вместо этого используйте функцию загрузки php.

Для решения проблемы кодирования вы можете сначала сериализовать содержимое загруженного файла с помощью serialize ();и если пользователь запрашивает его, то его можно сериализовать.Это лучший способ передачи файлов по Интернету.

0 голосов
/ 16 января 2010

Нам нужно увидеть код, который вы используете в форме, чтобы опубликовать данные, чтобы сказать наверняка. Как говорит streetparade - вы должны использовать move_uploaded_file () для перемещения файла, а не mv.

Однако, как только он попадет на сервер, особенно в качестве сервера Unix, системе не нужно будет менять его.

Когда вы говорите, что это изменилось, почему вы так думаете? Я думаю, что более вероятно, что вы получаете доступ к файлу через редактор не-utf8, или вы загрузили его с неправильным типом кодировки.

Попробуйте что-то вроде:

 <?php 
 move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/temp/test.txt');
 header('Content-type: text/plain; charset=utf-8');

 print file_get_contents('uploads/test.txt');

 ?>
...