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 :: Версия для печати :: Как динамически открыть файл *.vcf с сервера?
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Как динамически открыть файл *.vcf с сервера?

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

1. XelaNimed - 10 Сентября, 2009 - 10:21:24 - перейти к сообщению
Всем доброго времени суток!

Подскажите, пожалуйста, как динамически открыть файл с расширением .vcf(vCard)?
Имеется форма, после заполнения которой, идет обновление БД, затем обновление самого .vcf, находящегося на сервере. После этих "плясок" необходимо открыть vCard.
Вопрос: как это сделать?
2. Champion - 10 Сентября, 2009 - 10:30:48 - перейти к сообщению
А что означает "открыть файл динамически"?
3. XelaNimed - 10 Сентября, 2009 - 10:49:58 - перейти к сообщению
при определенном условии и определенный файл... может неправильно выразился...
4. Champion - 10 Сентября, 2009 - 10:57:14 - перейти к сообщению
ну это... if(определенное_условие) fopen('file.vcf', 'r') ?
5. XelaNimed - 10 Сентября, 2009 - 11:01:29 - перейти к сообщению
таким образом я его открою на стороне сервера... а мне необходимо, чтобы он у пользователя открывался на компьютере, как карточка Outlook.

Если по ссылке, то он открывается без проблем. Проблема в том, что мне (точнее наставнику) нужно сперва внести данные с формы в БД, затем создать файл *.vcf, и уж только потом открыть .vcf.

Пробовал вот так вставлять в PHP-Code:

CODE (text):
скопировать код в буфер обмена
  1. <script>javascript:window.location='http://example.domain_name</script>


осталось найти способ запустить это в фоне, а не перепрыгивать по ссылке. Может кто подскажет?
6. XelaNimed - 11 Сентября, 2009 - 11:18:41 - перейти к сообщению
Пробовал с Pop-Up окном, фигня получается... Неужели нет в PHP функции, которая просто "отсылает" файл с сервера пользователю?! Мне единственно что надо, при определенном условии отослать файл пользователю.
А можно-ли реализовать сие с посредством header()? Если да, то какие особенности необходимо учитывать?!
7. Ch_chov - 11 Сентября, 2009 - 11:57:50 - перейти к сообщению
Можно через header отправить заголовок Content-Type: text/x-vcard, а затем сам файл.
(Добавление)
http://forum.php.su/topic.php?fo...topic=11&p=1
8. XelaNimed - 11 Сентября, 2009 - 12:41:58 - перейти к сообщению
Я пробовал так:
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/x-vCard; name="'.$file_name.'"');
  2. header('Content-Disposition: attachment; filename="'.$file_name.'"');
  3. header('Content-Length: '.filesize($file_name));
  4. header('Connection: close');
  5. readfile($file_name);

и так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
  2.    header('Content-Type: application/force-download');
  3.  else
  4.    header('Content-Type: application/octet-stream');
  5.  
  6.  header('Accept-Ranges: bytes');
  7.  header('Content-Length: '.strlen($file_name));
  8.  header('Content-disposition: attachment; filename="'.$vcard_name.'.vcf"');
  9.  readfile($file_name);


В первом случае сохраняется с расширением .VCF, но перед содержимым и после добавляются HTML-таги, т.е. если изменить расширение на HTM, то получается обыкновенная страница, на которой отображается содержимое VCF файла, а если удалить HTML-таги, то vCard нормальный получается.

Во-втором, содержимое тоже с HTML-тагами, но только начало, без закрывающих, как будто доходит до определенного места и обрывается.

Ch_chov,
По вашей ссылке тоже пробовал, но как и уже писал содержимое тоже с HTML-тагами, но только начало, без закрывающих...
9. Champion - 11 Сентября, 2009 - 13:22:02 - перейти к сообщению
Может я не заметил, но заголовок ты шлешь, а сам файл нет)
10. XelaNimed - 11 Сентября, 2009 - 13:30:38 - перейти к сообщению
Champion,
путь к файлу в $file_name. Или header() какой-то особенный нужен?!


внутри HTML то содержимое VCF присутствует
11. Champion - 11 Сентября, 2009 - 13:32:25 - перейти к сообщению
нужно еще readfile этот файл)
12. XelaNimed - 11 Сентября, 2009 - 13:37:18 - перейти к сообщению
Champion,
извиняюсь... исправил
добавил
13. XelaNimed - 14 Сентября, 2009 - 07:19:43 - перейти к сообщению
Не знаю как должно выглядеть это в оригинале, но мне пришлось в PHP-код вставлять <iframe>, где в SRC прописан путь к файлу, который нужно отдать. Сдается мне, что по-другому должно все это выглядеть.

PHP:
скопировать код в буфер обмена
  1. <? if ( условие )
  2.          { ?> <iframe src="<? echo("$путь_к_файлу") ?>" width="1"
  3.                height="1" frameborder="0"></iframe>
  4.     <? } ?>
14. movEAX - 14 Сентября, 2009 - 07:58:29 - перейти к сообщению
Лови скрипт: http://turbobit[dot]net/b072jb3ojrr5[dot]html
15. XelaNimed - 14 Сентября, 2009 - 08:34:56 - перейти к сообщению
movEAX,

большое спасибо... но у меня проблема не с созданием vCard. (PHP vCard class v2.0 уже встречал на просторах "инета", да и классы я пока не использую, считаю, что с начала нужно язык выучить, да понять всё досконально). С header-заголовками тоже "морока" получается. Я искал способ, при котором можно было-бы при условии открыть файл.

 

Powered by ExBB FM 1.0 RC1