- PR -

ファイルアップロードの時すでに同じファイル名が存在している場合は?

1
投稿者投稿内容
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-09-27 10:13
お世話になります。

ファイルUploadの時すでに同じファイル名が存在している場合上書きされてしまいました。

いろんなUploadできるjarで試してみましたが
Uploadする直前にファイルが存在しているかどうかをチェックできるようなのが見当たらないです。

ServletInputStream in = request.getInputStream();
size = in.readLine(buffer,0,buffer.length);
上記のを使ってやってみようとしてますが最初からsizeがー1でしたのでうまくいかないです。

皆様はどういうふうに解決できましたかご教授よろしくお願いします。




山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-09-27 10:28
どんなものをお試しになりましたか?
例えば Struts ならばテンポラリの場所にファイル名が重複しないように一旦書き出してくれたような気がします。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-09-27 10:34
ご回答ありがとうございます。

Strutsは使ってませんが
hellohiroというものと
ServletInputStream in = request.getInputStream();
size = in.readLine(buffer,0,buffer.length); を使って直接書き込むのを試してみました。

Apacheからのアップロードをやってみようと思ってますが
<form enctype="multipart/form-data">  こうしてしまうとfileはアップロードできても他のパラメータは取れなくなってしまう恐れがありますよね。
それで今のところ迷ってます。

Apacheのアップロードで存在してるかどうか確認どれるんでしょうかね。

宜しくお願いします。







[ メッセージ編集済み 編集者: MUSE 編集日時 2004-09-27 10:39 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-09-27 10:51
Struts を使った場合、ファイルは既に書き込まれています。FormFile 等のクラスを参照してみてください。

Apache からのアップロード、とはなにを指していますか?
「fileはアップロードできても他のパラメータは取れなくなってしまう恐れ」というのもいまいち意味がわかりません。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-09-27 11:06
ご回答有難うございます。

もう一度整理させていただきます。

掲示板みたいですが 色んな項目が書けるし、ファイルも複数添付できるようにしたいです。

大体「enctype="multipart/form-data"」をFormに入れるとfile以外のパラメータが取れなかったです。すべてnullでした。 T.T

それに問題はファイルがアップロードされる前にファイル名をチェックして
すでに存在してるならディレクトリを生成してそのDIRに入れようと思います。

他のpackageも試してみたらボタンがキックされた時点でアップロードされて上書きされてしまいますのでちょっと意味がなかったです。

私の勘違いかわかってないからかも知れませんが。。。


よろしくお願いします。



がちゃぴん
会議室デビュー日: 2002/02/06
投稿数: 19
お住まい・勤務地: 東京都・いろいろ
投稿日時: 2004-09-27 11:13
こんにちは、がちゃぴんです。
試されたかどうかはわかりませんが、別jarでの方法を以下に紹介します。

アップロードファイルが既に存在する場合の対処法として、その場合の制御が可能な、
オライリー(oreilly)のマルチパートリクエスト(MultipartRequest)を使用しています。

アップロード時のリクエストの場合にアップロードファイルやその他のリクエスト内容を
含むマルチパートリクエストをファイルリネームポリシー(FileRenamePolicy)を使用して
生成すると、重複時にファイル名の最後に1から順にシーケンシャルな数値を付加して
重複を避けてくれます。ファイルリネームポリシーを使用しなければ後優先の上書きに
なります。重複チェックとして使えるかは微妙かも。
下記は、APIも含めて英語ですが、翻訳サイトを使えば、なんとか使い方は
わかると思います(私もなんとかしたので)。

他のツールは使用したことが無いので、よりよいツールがあるのかもしれませんが、
選択肢の一つとして、御一考されてはいかがでしょうか。

http://www.servlets.com/cos/

タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-09-27 11:29
がちゃぴん様

ご回答有難うございます。

できそうな気がします。 トライしてみます。

有難うございます!!!
1

スキルアップ/キャリアアップ(JOB@IT)