• ベストアンサー

ファイルのアップロード

お世話になります。 ファイルのアップロードについて教えてください。 自分のローカルディスクにあるexcelやword等のファイルをアップロードし、ACCSESS等のDBへ登録させるにはどうしたら良いのでしょうか? ディレクトリへのアップロードの仕方はわかるのですが、 DBへの登録の仕方がわかりません。また、ODBC等の設定方法も分かります。 参考になるソース等ありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.3

私もmann555さんと同意見で特定のディレクトリにアップロードしてもらい、ファイル名をデータベースに保存させています。 肝心のユニークなファイル名の生成はFileSystemObjectのGetTempNameメソッドを利用してこのファイル名でサーバーに保存し、ブラウザに返す時に本来のファイル名を返すようにしています。 (もちろんこのユニークなファイル名もデータベースに保存させておく必要がありますが・・・) これだと同時に複数から処理が行われてもファイル名が重複することがありませんし、同名ファイルをいくつでもアップロードしてもらうことができます。 Accessですと、直接データベースの中にバイナリファイルを保存することも出来るらしいのですが、他で同じデータが必要になった時や他のデータベースに移行するときに大変な目にあいそうなので利用したことがないです。 (そもそもAccess自体も最近使ってないんですが) あくまでこれは私なりの方法で、これがベストの方法とは言えませんが、少しでもsuperstarさんの参考になれば幸いです。

参考URL:
http://www.microsoft.com/japan/developer/library/script56/jsmthgettempname.htm
superstar
質問者

補足

貴重な意見ありがとうございました。 このときのユニークなファイル命名法は、Getbasenameでベース名をとりだし、それに拡張子つけるという方法を使われているのですか? また、GETTEMPNAMEについては、私の本ではランダムなファイル名となっています。必ず一意になるのでしょうか? 度々申し訳ございませんが、宜しくお願いします。

その他の回答 (3)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.4

> このときのユニークなファイル命名法は、Getbasenameでベース名をとりだし、それに拡張子つけるという方法を使われているのですか? 本来のファイル名は別途保存しているので、 GetTempNameメソッドの戻り値をそのまま使用しています。 ですが、superstarさんの方法でも特に問題ないと思います。 >また、GETTEMPNAMEについては、私の本ではランダムなファイル名となっています。必ず一意になるのでしょうか? 完全に一意になるという保証はできませんが、複数台のクライアントマシンやWAS(Web Application Stress Tool)などでテストしたときには支障なかったです。 あと、実際にこれを使用したASPを実サイトを運用しておりますが、今のところ特に問題は起きていないです。 参考になれば。

  • mann555
  • ベストアンサー率46% (29/62)
回答No.2

ファイルはサーバーのフォルダに保存し DBには保存先のPathとファイル名を登録する という方法では駄目なんですか? 保存先のファイル名は日時等付けてユニークになるよう リネームしてやる必要がありますが... DBにファイル自体を登録する方法が無いわけでは 有りませんが、あまり効率のいいやり方ではないかと...

  • raly-raly
  • ベストアンサー率29% (24/82)
回答No.1

こんにちは。 回答ではないのですが、ちょうど私も同じ質問をしようと思っていたのでカキコさせていただきます。 私の場合は、EXCELかCSVをDBへ登録したいのですが。 EXCELかCSVにODBC接続するADOコネクションを作成し、インサートされる側のDBのコネクションをもうひとつ作成する。↓たぶんこういう感じ?? Conn.Open "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ=" & ファイルのパス & ";" EXCELレコードセットのEOFまでループしながら、DBへ1レコードずつインサートする。 と、思ったのですが、EXCELレコードセットの作り方がよくわからないー。(調べ中) まだ何もやってみてないのでなんとも言えないのですが、異様に効率悪い方法な気がして、superstarさんの質問に注目してたんです!!

関連するQ&A