форум vBSupport.ru > vBulletin > vBulletin 3.8.x > Вопросы по vBulletin 3.8
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Gostemilov
Специалист
Default Как вывести контент текстового вложения?
0

Допустим, в аттач загружен файл TXT и на его скачивание имеют права все группы

Я хочу вывести этот текст (а, может быть даже и HTML, если получится) где-то в зоне аттачей

В известном хаке применительно к MP3 это выглядит так:

PHP Code:
          <if condition="$attachment[attachmentextension] == 'mp3'"
            <!-- 
MP3 -->
             <
embed src="pl.swf" width="300" height="20" allowscriptaccess="always" allowfullscreen="true" 
flashvars="type=mp3&amp;volume=50&amp;width=300&amp;height=20&amp;file=attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]&amp;d=$attachment[dateline]&amp;showstop=true&amp;autostart=false" />
            <!-- 
MP3 -->
         </if> 
ОК, пишем по аналогии - ничего не выводит. Хорощо, делаем так

PHP Code:
<div>
<
object data="engine.php?file=attachment.php?$session[sessionurl]attachmentid=$attachment[attachmentid]type="text/plain"
width="800px" style="height: 400px">
</
object>
</
div
и уж в engine.php получаем искомое

Ага, как же!

PHP Code:
$text="http://".$_SERVER['SERVER_NAME'] ."/".$_GET["file"];
echo 
"<br /><b>URL: </b> ".$text;
$data file_get_contents($text);
echo 
"<hr>".$data."<hr>"
не пашет

Ладно, пробуем простой файл

PHP Code:
$filename="robots.txt";
echo 
'<object data="'.$filename.'" type="text/plain"
width="500" style="height: 300px">
<a href="/path_to_text_file/text.txt">No Support?</a>
</object>'

- все работает расчудесно.

Так каким образом можно вытащить искомое? Голова не варит уже в принципе... Заранее спасибо

Gostemilov добавил 02.04.2017 в 18:00
Вероятно, это называется "Через задницу",

PHP Code:
<?PHP
$text
="http://".$_SERVER['SERVER_NAME'] ."/".$_GET["file"];

$filename=$text;

$array file($filename);
$str implode("<br>",$array);

echo 
$str;
?>
Работает, но можно ли сделать как-то лучше?

Last edited by Gostemilov : 04-02-2017 at 07:00 PM. Reason: Добавлено сообщение
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
kerk
k0t
 
kerk's Avatar
Default
0

вроде такой вопрос уже задавался и ответ был... =)
не помню
и тему найти не могу (может и не выкладывал в паблик)
я писал хак, он установлен на саппорте
просмотр инлайн всех текстовых файлов прикрепленных как вложение к посту
пример можно посмотреть в любой теме, где есть вложения с "текстовыми" типами файлов: txt, js, php, xml, html, htm...
или в этом сообщении (прицепил тестовые файлы)

а идея, показать содержимое вот прямо при загрузке страницы, не совсем хорошая, это дополнительные ресурсы и, как следствие, тормоза при загрузке страницы
Attached Files
File Type: php test.php (670 Bytes, 16 views)
File Type: xml spiders_vbulletin.xml (1.0 KB, 14 views)
File Type: txt fish.txt (1.2 KB, 12 views)
File Type: txt fish-over.100KB.txt (120.6 KB, 0 views)
 
 
Catlord Meow
Специалист
 
Catlord Meow's Avatar
Default
1

Quote:
Originally Posted by kerk View Post
и тему найти не могу (может и не выкладывал в паблик)
http://vbsupport.ru/forum/showthread...679#post510679
 
 
kerk
k0t
 
kerk's Avatar
Default
0

ок
значит не выкладывал =)
 
 
Gostemilov
Специалист
Default
0

В общем, сделал так - файл classs_postbit.ptp

после строки 424

PHP Code:
$attachment['filesize'] = vb_number_format($attachment['filesize'], 1true); 
вставил

PHP Code:
                //Просмотр аттачей
                
if($attachment['attachmentextension']="txt")
                    {
                        
$filename="http://".$_SERVER['SERVER_NAME'] ."/attachment.php?".$session['sessionurl']."attachmentid=".$attachment['attachmentid'];
                        
$txtarray file($filename);
                        
$txtstr implode("<br>",$txtarray);
                    }
                
//Просмотр аттачей 
и в шаблоне postbit_attachment завернул все это в спойлер

PHP Code:
<if condition="$attachment[attachmentextension] == 'txt'"
<
tr><td colspan="2">
    <
div class="spoiler">
        <
h2>Просмотреть вложение $attachment[filename]</h2>
            <
div>
                
$txtstr
                    
<div class="sphide">
                        [
свернуть]
                    </
div>
            </
div>
    </
div>
</
td></tr>
</if> 
Што дало нам

Этараз



Этадва



В тоге для моих целей это то, что надо, осталось только еще fb2 парсить научиться, тоже есть там пара мыслей

Gostemilov добавил 03.04.2017 в 10:59
Quote:
Originally Posted by kerk View Post
а идея, показать содержимое вот прямо при загрузке страницы, не совсем хорошая, это дополнительные ресурсы и, как следствие, тормоза при загрузке страницы
- тут вот в чем дело - допустим, хочу я сделать на базе форума ну, к примеру справочник на , гм, пусть будет 100 000 000 статей (условно) весом гигабайт 50 (условно) текста. Мне что, это все в базу пихать? Да провались она пропадом! Или опять же несколько книжек в FB2 выложить, да так, чтоб не скачивая читать можно было (теперь это реально уже)

Last edited by Gostemilov : 04-03-2017 at 11:59 AM. Reason: Добавлено сообщение
 
 
kerk
k0t
 
kerk's Avatar
Default
0

ну не знаю, на сколько быстрей такое решение
PHP Code:
$txtarray file($filename); 
$txtstr implode("<br>",$txtarray); 
я бы сделал так
PHP Code:
$content file_get_contents(fetch_attachment_path($attachment['userid'], $attachment['attachmentid'])); 
а $content уже выводить как текст в спойлере
или еще лучше, если уж задействован спойлер, то запрашивать содержимое только при клике на спойлере, но в таком случае, это ничем не будет отличаться от скрипта, о котором я упоминал выше =)
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Quote:
Originally Posted by Gostemilov View Post
осталось только еще fb2 парсить научиться
по сути, это обычный текстовый файл, который имеет структуру XML
можно задействовать вобловские инструменты для этого
их достаточно, что бы распарсить документ и выдать содержимое на страницу
 
 
Gostemilov
Специалист
Default
0

Quote:
Originally Posted by kerk View Post
можно задействовать вобловские инструменты для этого
их достаточно, что бы распарсить документ и выдать содержимое на страницу
Опа! Это какие такие вобловские инструменты???!!!


Quote:
Originally Posted by kerk View Post
$content = file_get_contents(fetch_attachment_path($attachment['userid'], $attachment['attachmentid']));
Выводит текст в строку, теряются переводы строк, пробовал...
 
 
kerk
k0t
 
kerk's Avatar
Default
0

гифка большая
если файл более 100-150 КБ, скрипт начинает тормозить, много текста, который нужно распарсить

Quote:
Originally Posted by Gostemilov View Post
Выводит текст в строку, теряются переводы строк
PHP Code:
$string nl2br($string); 
и все переводы строк сохраняются
Quote:
Originally Posted by Gostemilov View Post
какие такие вобловские инструменты?
includes/class_xml.php
PHP Code:
class vB_XML_Parser
{
    
// ......

но я использовал класс DOMDocument
 
 
Gostemilov
Специалист
Default
0

Хорошая гифка. Познавательная. Я б даже сказал - симпатишная. А продукт ейный где? Или оно платное? А если да, то почем оно?

И сразу вопрос вдогон. Допустим, есть каталог, а нем миллион (условно) текстовых файлов. Я быстренько пишу скрипт, который прочесывает этот каталог, формирует тему, создает ее и удаляет нафиг использованный файл, чтоб не мешался. Это есть сейчас и оно работает. Но - текст файла уходит в базу, что меня категорически не устраивает.

Да, я видел, что есть функция создания аттачей.

Вопрос - как подключить ее так, чтобы

1. Читаем файл /var/www/1.txt
2. Средствами PHP формируем из него тему
3. Создаем тему и этот файл присобачиваем к теме в качестве аттача
4. Удаляем файл за ненадобностью
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:04 AM.


Powered by vBulletin® Version 3.0.13
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...