PHPでファイルをアップロードするプログラムを作っています。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/06/30 14:13:27
  • 終了:--

回答(6件)

id:izayoimizuki No.1

izayoimizuki回答回数302ベストアンサー獲得回数02005/06/30 14:22:48

ポイント15pt

上書きするとか?

安易かな?

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

id:takeuchi_k

そうでしょうねえ・・・

実装がめんどくさそう。

2005/06/30 14:28:29
id:mjdr No.2

mjdr回答回数16ベストアンサー獲得回数02005/06/30 14:46:25

ポイント15pt

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

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

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


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


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

id:takeuchi_k

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

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

2005/06/30 14:59:42
id:chatoraneko No.3

chatoraneko回答回数221ベストアンサー獲得回数02005/06/30 15:27:48

ポイント15pt

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

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

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

id:takeuchi_k

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

md5した値が××として、

それを表示するときに

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

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

2005/06/30 15:30:51
id:GEN111 No.4

GEN111回答回数472ベストアンサー獲得回数582005/06/30 15:36:28

ポイント15pt

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

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


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

0001_test.txt

pagename_test.txt


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


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

id:takeuchi_k

ええ。掲示板です。

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

2005/06/30 15:37:55
id:kanata_ail No.5

kanata_ail回答回数98ベストアンサー獲得回数02005/06/30 15:59:33

ポイント15pt

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

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


ダウンロード時に

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

id:takeuchi_k

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

ありがとうございます。

2005/06/30 16:11:13
id:typista No.6

typista回答回数359ベストアンサー獲得回数72005/06/30 16:01:17

ポイント15pt

>上書きせずに、外部的には同じファイル名を添付させておき、

>内部的には別ファイル名で保存、ダウンロード時はアップロード時のファイル名で、

>という無茶はできないものかと。


タイムスタンプでディレクトリ作って、そこにアップするようにしておけば、同名ファイルの最新版は、常に最新タイムスタンプのディレクトリ配下ですね。

そうすれば、アップロードファイル名=ダウンロードファイル名になりますね。

id:takeuchi_k

なるほど。これも根源的ですね。

2005/06/30 16:11:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません