CGI-BBS > ホームページ記述言語 > PHP > 拡張子のないファイルのアップロード


カレッヂ
カレッヂ


質問者 Earth  投稿日 4/4(木) 16:15:32
ファイルのアップロードをPHPで制作しています。
拡張子がないものをMacでアップロードすると、
全てMacBinaryになってしまいます。
ヘッダか何かで判別する方法がありましたら
是非ご鞭撻のほど宜しくお願いします。
回答者 kaz  [削除]  投稿日 4/8(月) 11:33:25
>全てMacBinaryになってしまいます。

MacBinaryになるとどういう不都合が起こりますか?
文字コードや改行コードがおかしくなるとかですか?
アップするファイルの中身はどんな感じでしょうか?

お役に立てるかどうか分かりませんが・・・
質問者 Earth  [削除]  投稿日 4/8(月) 12:11:51
ご返答ありがとうございます。
重要なことを書き忘れていました。申し訳ありません。
今回は、画像のみをアップロードさせるPHPを制作しています。
(画像以外は、アップロードさせない方針です。)

Windowsの場合は、ファイルタイプを取得できたのですが($upfile_typeで)
Macintoshの場合で拡張子がない場合
全てMacBinalyとして認識されるので、
画像として判別ができません。そのためアップロードできないといった状況です。

「拡張子を付けてください」と明記すればいいのですが、
今後のために「Macintoshファイルのファイルタイプの取得方法」を
ご存じの方がいらっしゃれば教えていただきたいと思います。
宜しくお願いいたします。
回答者 kaz  [削除]  投稿日 4/8(月) 12:30:33
ブラウザのバージョンは何ですか?
MacのIE4ではファイルにリソースフォーク(ヘッダーかな?)というものが
くっついてしまうそうです。
IE5では大丈夫らしいのですが。。
私はMacではないので確認することができません。ごめんなさい

あっ。。Earthさんの希望はファイルタイプの判別の方法ですよね?
表示出来るとか出来ないとかじゃないですよね?

でしたら、そのファイルのリソースフォークを抜き出してそこに何が入っているか見てみるのはどうでしょう?
もしかしたらファイルタイプの情報があるかもしれません。
ファイルの83Byte から 4Byte がデータフォーク長の情報が入っています。
つまり、アップロードされてきたデータの 129Byte 目からデータを抜き出せば、リソースフォークが取り除けるかと思います


ちょっとあやふやなので確かとは言えませんが・・・
回答者 こう  [削除]  投稿日 2005/9/6(火) 17:47:16
はじめまして。
以前画像のDBを作ろうとしたときに、私も同じような問題に遭遇しました。
そのときはかなり強引ですが、imagecreatefromjpeg()の戻り値がfalseでなければ
jpegファイル、ファイルを頭から読んでeps特有の文字列を発見したらepsファイル、
のような判定をした記憶があります。
はずしていたらごめんなさい。
回答者 sim  [削除]  投稿日 2005/9/6(火) 20:54:11
getimagesizeで取得出来ませんか?
回答者 Umka  [削除]  投稿日 2007/2/15(木) 03:48:29
CuteFTPというFTPマネージャやFirefoxのFTPプラグインを使ったら、問題が解決できます。
FTPマネージャの設定でBinary, ASCII, PASVなどの設定を必要に応じて変更できます。
上記の場合、ASCIIを使わなければならないように気がします。
http://weblog.ai-web-hosting.com

返信(回答)する


Web裏技