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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с RTF

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Andrew_li
Отправлено: 20 Июня, 2013 - 08:57:37
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Добрый день, форумчане, подскажите где ошибка.
Работа скрипка такова, открыть поток, заменить пару строк и отдать на загрузку.
Все берет, заменяет, выдает, НО файл остается не дописан, не хватает пару символов в конце строки, хотя если выводить в окно браузера все символы на месте, что может быть?

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. }
 
 Top
DeepVarvar Супермодератор
Отправлено: 20 Июня, 2013 - 09:26:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Andrew_li пишет:
$fsize
Считай его после изменения файла.
Ты как хотел, указать длину одну, а файл передать другой?
 
 Top
Andrew_li
Отправлено: 20 Июня, 2013 - 09:58:06
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




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);
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июня, 2013 - 10:25:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А вы файл обратно записали на диск, чтобы filesize видел изменение?
Если нет - то strlen.


-----
PostgreSQL DBA
 
 Top
Andrew_li
Отправлено: 20 Июня, 2013 - 10:41:40
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Мелкий пишет:
А вы файл обратно записали на диск, чтобы filesize видел изменение?
Если нет - то strlen.


Мне записывать на сервер не нужно, с измененными файл должен скачиваться, а на сервере оставаться шаблон.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Июня, 2013 - 10:46:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ну так если у вас модифицированный файл только в памяти - почему за размером этого модифицированного файла вы лезете на диск к немодифицированному?


-----
PostgreSQL DBA
 
 Top
Andrew_li
Отправлено: 20 Июня, 2013 - 11:11:30
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Мелкий пишет:
Ну так если у вас модифицированный файл только в памяти - почему за размером этого модифицированного файла вы лезете на диск к немодифицированному?


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

Убираешь 17be4 и все ок, но это же не правильно.

(Отредактировано автором: 20 Июня, 2013 - 11:12:23)

 
 Top
Мелкий Супермодератор
Отправлено: 20 Июня, 2013 - 11:21:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Сохраните скрипты в UTF8 без BOM.


-----
PostgreSQL DBA
 
 Top
Andrew_li
Отправлено: 20 Июня, 2013 - 11:44:21
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Мелкий пишет:
Сохраните скрипты в UTF8 без BOM.

Сайт работает в 1251
(Добавление)
Решилась проблемка Радость
Заменой заголовка
Было: header('HTTP/1.1 200 OK');
Стало: header('HTTP/1.0 200 OK');
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB