3

アップロードされたファイルのmimeタイプを取得するのは簡単です。

echo mime_content_type($fileatt['tmp_name']);

ただし、zipファイルに含まれているmimeタイプのファイルも確認したいと思います。ファイルを解凍した後(zip内のファイルをループしi、現在のファイルはどこにありますか)、次のことを試しました。

$info = pathinfo($zip->getNameIndex($i));
echo mime_content_type($info['dirname'] . "\\" . $info['basename']);

これによりエラーが発生します:警告:mime_content_type()[function.mime-content-type]:ファイルまたはパスがC:\Users\<user>\<website>\validation.php56行目に「。\foo.pdf」が見つかりません

dirnamezipファイルのは絶対パスではなくzipファイルに関連していることに気付いたので、次のことを試しました。

$a = pathinfo($fileatt['tmp_name']);
$b = $a['dirname'] . "\\" . $info['basename'];
echo mime_content_type($b);

エラーが発生します:警告:mime_content_type()[function.mime-content-type]:ファイルまたはパスがC:\Users\<user>\<website>\validation.php56行目に「C:\ xampp \ tmp\foo.pdf」が見つかりません

誰かがファイルのパスに光を当てることはできますか?(答えはzipファイルから画像の高さと幅を取得することに関するコメントと同じかもしれないと思いますが、別の方法はありますか?)

アップデート

ババのおかげで、以下が機能します。

$fp = fopen('zip://C:\Users\<user>\<website>\test.zip#foo.jpg', "r");

(nbこれを機能させることができるのは、ファイルがフォームを介してアップロードされる場合のようにtmpファイルではなく、zipファイルの完全なルートを指定した場合のみです)。ただし、mime-type:を取得しようとするとecho mime_content_type($fp);、エラーが発生します。

Warning: mime_content_type() [function.mime-content-type]: stream does not support seeking in C:\Users\<user>\<website>\includes\validation.php on line 70

これはファイルの種類に関係なく発生します(つまり、 http://php.net/manual/en/ziparchive.getstream.phpの唯一のコメントに記載されている問題は私に影響を与えていないようです)。

ちなみに、これは別の方法を試したときに発生するエラーと同じです。$fp = $zip->getStream('foo.jpg');

SOには他にも「ストリームがサポートされていない」質問がいくつかあることは知っていますが、それらが私の問題にどのように関連しているかを理解できませんでした。この方法が具体的に提案されているので、誰かが良い答えを持っているかもしれないと期待していました。 。

(psfinfo_*現在、ホストがPHP v5.3のインストールを拒否しているため、関数を使用していません)。

4

3 に答える 3