質問箱/4594

カテゴリ
サマリ添付ファイルが壊れる
バージョン1.4.7
投稿者sato.is-tech
状態完了
投稿日2010-06-18 (金) 18:01:35

質問

EXCELファイルを添付ファイルにアップロードして、ダウンロードするとファイルが壊れてしまいます。 attachフォルダのファイルをFTPでダウンロードして、対象ファイルを開くと大丈夫のようです。

※最初ファイル名も文字化けしてしまっていたので、過去の質問を参照しattach.inc.phpを直すことで 解決することができました。

attach.inc.phpのopen()メソッドのコードは現在以下のような状況となっております。

	function open()
	{
		$this->getstatus();
		$this->status['count'][$this->age]++;
		$this->putstatus();
		$filename = $this->file;


		echo("filename:{$filename}<br />");
		echo("this->size:{$this->size}<br />");
		echo("this->type:{$this->type}<br />");
		echo("this->filename:{$this->filename}<br />");

		if(ereg("MSIE",$_SERVER["HTTP_USER_AGENT"])){
			$filename = htmlspecialchars(mb_convert_encoding($this->file,'SJIS','auto'));
			$filename = htmlspecialchars($filename);
			
		}else{
		
			$filename = htmlspecialchars(mb_convert_encoding($this->file,'UTF-8','auto'));
			$filename = htmlspecialchars($filename);
		}
		
		
		ini_set('default_charset','');
		mb_http_output('pass');
		
		header('Content-Disposition: inline; filename="' . $filename . '"');
		header('Content-Length: ' . $this->size);
		header('Content-Type: '   . $this->type);
		flush();
		@readfile($this->filename);

		exit;
	}

質問箱/236 質問箱/2033

を参考にしましたが、解決することができません。お手数ですがご教授ください。

クライアント環境:  OS:windows Xp SP3  ブラウザ:google Chrome 5.0.375.70

サーバ環境:  レンタルサーバ:sixcore S1  OS:Linux  PHP Version 5.1.6

	mbstringの設定
		Multibyte Support	enabled
		Multibyte string engine	libmbfl
		Multibyte (japanese) regex support	enabled
		Multibyte regex (oniguruma) version	3.7.1
		Local & Master Value 
			mbstring.detect_order	auto
			mbstring.encoding_translation	Off
			mbstring.func_overload	0
			mbstring.http_input	auto
			mbstring.http_output	SJIS
			mbstring.internal_encoding	EUC-JP
			mbstring.language	Japanese
			mbstring.strict_detection	Off
			mbstring.substitute_character	no value

回答

	Before
	if (LANG == 'ja') {
		switch(UA_NAME . '/' . UA_PROFILE){
		case 'Opera/default':
			$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
			break;
		case 'MSIE/default':
			$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
			break;
		}
	}
	After
	if (LANG == 'ja') {
		switch(UA_NAME . '/' . UA_PROFILE){
		case 'Opera/default':
			$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
			break;
		case 'MSIE/default':
			$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
			break;
		case 'Mozilla/default':
			if(eregi('Chrome', getenv( "HTTP_USER_AGENT" ))){
				$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
				
			}
			else{
				$filename = mb_convert_encoding($filename, 'EUC', 'auto');
			}
			break;
		case 'Firefox/default':
			$filename = mb_convert_encoding($filename, 'EUC', 'auto');
			break;
		default:
			$filename = mb_convert_encoding($filename, 'SJIS', 'auto');
			break;
		}
	}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-23 (木) 19:14:24
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.234 sec.

SourceForge