Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Работа с RTF
Форумы портала PHP.SU » » Вопросы новичков » Работа с RTF

Страниц (1): [1]
 

1. Andrew_li - 20 Июня, 2013 - 08:57:37 - перейти к сообщению
Добрый день, форумчане, подскажите где ошибка.
Работа скрипка такова, открыть поток, заменить пару строк и отдать на загрузку.
Все берет, заменяет, выдает, НО файл остается не дописан, не хватает пару символов в конце строки, хотя если выводить в окно браузера все символы на месте, что может быть?

PHP:
скопировать код в буфер обмена
  1. $file = '/files/doc.rtf';
  2. $file = $_SERVER["DOCUMENT_ROOT"] . $file;
  3. $fsize = filesize($file);
  4.  
  5. if(file_exists($file))
  6. {
  7.   $filedata = file_get_contents($file);
  8.   $filedata = str_replace('SUMMA', 500 , $filedata);
  9.   $filedata = str_replace('PAYNAME', "Админ" , $filedata);
  10.  
  11.   header('HTTP/1.1 200 OK');
  12.   header('Content-Description: File Transfer');
  13.   header('Content-Type: application/rtf');
  14.   header('Content-Disposition: attachment; filename="doc.rtf"');
  15.   header('Content-Length: ' . $fsize);
  16.  
  17.   print $filedata;
  18.   exit();
  19. }
2. DeepVarvar - 20 Июня, 2013 - 09:26:49 - перейти к сообщению
Andrew_li пишет:
$fsize
Считай его после изменения файла.
Ты как хотел, указать длину одну, а файл передать другой?
3. Andrew_li - 20 Июня, 2013 - 09:58:06 - перейти к сообщению
DeepVarvar пишет:
Andrew_li пишет:
$fsize
Считай его после изменения файла.
Ты как хотел, указать длину одну, а файл передать другой?


Не помогло, также отрубает конец
Как должно быть: 0000000000}}
А вот как есть: 0000000000

PHP:
скопировать код в буфер обмена
  1.  $fsize = filesize($file);
  2.   header('HTTP/1.1 200 OK');
  3.   header('Content-Description: File Transfer');
  4.   header('Content-Type: application/rtf');
  5.   header('Content-Disposition: attachment; filename="pd4.rtf"');
  6.   header('Content-Length: ' . $fsize);
4. Мелкий - 20 Июня, 2013 - 10:25:23 - перейти к сообщению
А вы файл обратно записали на диск, чтобы filesize видел изменение?
Если нет - то strlen.
5. Andrew_li - 20 Июня, 2013 - 10:41:40 - перейти к сообщению
Мелкий пишет:
А вы файл обратно записали на диск, чтобы filesize видел изменение?
Если нет - то strlen.


Мне записывать на сервер не нужно, с измененными файл должен скачиваться, а на сервере оставаться шаблон.
6. Мелкий - 20 Июня, 2013 - 10:46:20 - перейти к сообщению
Ну так если у вас модифицированный файл только в памяти - почему за размером этого модифицированного файла вы лезете на диск к немодифицированному?
7. Andrew_li - 20 Июня, 2013 - 11:11:30 - перейти к сообщению
Мелкий пишет:
Ну так если у вас модифицированный файл только в памяти - почему за размером этого модифицированного файла вы лезете на диск к немодифицированному?


Убрал строку с размером, вывод немного поменялся, теперь странные символы появились спереди Однако
Оригинал: {\rtf1\adeflang1025\
Скаченное: 17be4{\rtf1\adeflang1025

Убираешь 17be4 и все ок, но это же не правильно.
8. Мелкий - 20 Июня, 2013 - 11:21:55 - перейти к сообщению
Сохраните скрипты в UTF8 без BOM.
9. Andrew_li - 20 Июня, 2013 - 11:44:21 - перейти к сообщению
Мелкий пишет:
Сохраните скрипты в UTF8 без BOM.

Сайт работает в 1251
(Добавление)
Решилась проблемка Радость
Заменой заголовка
Было: header('HTTP/1.1 200 OK');
Стало: header('HTTP/1.0 200 OK');

 

Powered by ExBB FM 1.0 RC1