1

私は携帯電話 (つまり、Android を実行している) にダウンロードを提供していますが、Android は特定のヘッダーのみを受け入れているようです。これが私がJoomlaでやろうとしていることです。

    $doc =& JFactory::getDocument();
$doc->setMimeEncoding('application/octet-stream');

これは機能しますが、何らかの理由で Joomla がヘッダーに charset=utf-8 を追加しているため、ダウンロードが機能しません。この文字セットを取り除くにはどうすればよいですか (とにかく、バイナリ ファイルではまったく役に立たないことがわかります)。

4

3 に答える 3

2

PHP 5.3ではheader_remove、が導入されています。これはおそらくあなたのケースで使用できます(ただし、私はJoomlaの経験がほとんどありません)。

于 2012-08-17T15:40:44.327 に答える
1

Joomla 2.5 (下位バージョンまたは上位バージョンではテストされていません) の場合、Joomla は独自のヘッダーを追加します。これが、JResponse::clearHeaders(); を使用する必要がある理由です。

$filename = basename($file);
ob_end_clean();
JResponse::clearHeaders();
JResponse::setHeader('Content-Type', 'application/octet-stream', true);
JResponse::setHeader('Content-Disposition', 'attachment; filename='.$filename.';', true);
JResponse::sendHeaders();
echo JFile::read($file);
于 2013-03-05T22:09:49.997 に答える
0

記録のために:JoomlaのMVC構造内では実行できません.charset(および他のヘッダー)が常に添付されているため、別のphpファイルからJoomlaのフレームワークをインポートして初期化することになりました。

define( '_JEXEC', 1 );

// real path depending on the type of server
// change the number of returns/level needed in your path relative to the position of your script in your directory
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'JPATH_COMPONENT', realpath(dirname(__FILE__).'/..' ));
define( 'DS', DIRECTORY_SEPARATOR );

// loading framework of Joomla!
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

/* 
... some other joomla stuff ...
*/
header('Content-Disposition: attachment; filename="example.zip"'));
header('Content-Type: application/octet-stream');
readfile($lfile);

したがって、基本的には、フレームワークをロードし、データベースなどを使用して、独自にヘッダー関数を呼び出します。願っています、これは他の誰かを助けます。

于 2012-08-17T20:55:43.707 に答える