人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでファイルをアップロードするプログラムを作っています。
アップロードしたのと同じファイルが、格納ディレクトリ内に存在するとき、どういう処理をするのがよいでしょうか。
・uniqな連番をつける
・同じ名前のファイルがあるときはアップロードを拒否
以外の解決方法を紹介しているページがあったら教えてください。
PHPのプログラムがあったらベストですが、処理方法の説明だけでもいいです。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:PHP アップロード ディレクトリ ファイル プログラム
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● izayoimizuki
●15ポイント

http://izayoi.nm.land.to/

十六夜

上書きするとか?

安易かな?

多分3種を実装してユーザーにどうするか問い合わせるのが良いと思う。

◎質問者からの返答

そうでしょうねえ・・・

実装がめんどくさそう。


2 ● mjdr
●15ポイント

http://php.nekosuke.net/000023.html

ファイルのアップロード:ねこすけのPHP

日付時刻をファイル名にしてしまうのが一番ではないでしょうか。


アップロード後の処理(コピー)の小さなサンプルが載っているページを紹介しておきます。


ファイル名を日付にするという変更と、できればその日付を一時ファイルに書き込んで息、その内容と同じだったら処理をまってリトライ、なんてコードを書けば重複や上書きもなくなるのではないでしょうか。

◎質問者からの返答

シリアル番号や~1などをつける処理も考えたのですが、アップロードしたファイルを、あとで「添付ファイル」として参照するので、名前が変わるのは避けたいのですよね。

無理目のことを言っているのは分かっていますが、なにかいい方法はないものかと。


3 ● chatoraneko
●15ポイント

http://php.s3.to/man/function.md5.html

md5

私はファイル名で管理せずに

ファイル名とタイムスタンプの足した値をmd5して管理しています。

ダウンロードする際にファイル名テーブルからひっぱってきます。

◎質問者からの返答

ファイル名テーブルには行っているのが○○

md5した値が××として、

それを表示するときに

<a href=”××”>○○</a>

とすると、実際にダウンロードされるファイルの名前は××になり、ユーザから見たら、なんじゃこりゃ、にならないかと。


4 ● GEN111
●15ポイント

http://www.spencernetwork.org/memo/tips-5.php

PHP TIPS Vol.5

添付ファイルということは掲示板とか wiki とかでしょうか?

保存時に記事IDやページ名を付加してはいかがでしょうか。


アップロードファイル test.txt

0001_test.txt

pagename_test.txt


リクエスト時にはファイルへリダイレクトするのではなく、自分でそのファイルを読んで出力する必要がありますが。


同じ記事に同じ名前のファイルを添付したときは……上書きですかね。

◎質問者からの返答

ええ。掲示板です。

上書きせずに、外部的には同じファイル名を添付させておき、内部的には別ファイル名で保存、ダウンロード時はアップロード時のファイル名で、という無茶はできないものかと。


5 ● kanata_ail
●15ポイント

http://www.studyinghttp.net/header#Content-Disposition

[Studying HTTP] HTTP Header Fields

ファイル保存時には連番で保存しておき

DBには元のファイル名も収納。


ダウンロード時に

Content-Dispositionヘッダで元のファイル名を通知すればいいとおもいます。

◎質問者からの返答

なるほど。高度ですが、抜本的ですね。

ありがとうございます。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ