【WEBプログラミング】

ブラウザから,ディレクトリを指定して,条件に当てはまる複数のファイルをアップロードする事が可能か知りたいです.
もしくは,ディレクトリを指定してそのディレクトリ内すべてのファイル(サブディレクトリを含む)をアップロードする事が可能かどうか知りたいです.
PHP,javascript,Ajaxなどの技術でできるとありがたいです.

■やりたい事の例
d:\image\フォルダ(ユーザローカル)の中から .jpgファイルを検索して
条件に当てはまったファイルをすべてアップロードする
もしくは,htmlのフォームのinput type fileにファイル名を入れた状態にする

■思っていること
・ZIPで固めてそれをアップロードしてもらい,サーバで展開し,条件の検索かけるのがスマートかと思うのですが,ユーザにZIPで固める手間をかけさせたくない.
・ブラウザから,ローカルのファイル検索をするのは,セキュリティ上よろしくなさそうなので,できない?

回答の条件
  • 1人10回まで
  • 登録:2009/03/12 18:47:59
  • 終了:2009/03/19 02:23:14

ベストアンサー

id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/03/12 23:00:06

ポイント40pt

upuさんが懸念しているとおり、インターネットに接続しているブラウザがローカルディスクにアクセスすることは、セキュリティ上、好ましいことではありません。

クライアントサイド・プログラムを記述できる JavaScript と系列の ActiveScript(Flash)は、そのようなことができないようになっています。サーバサイド・プログラムである PHP なども、ローカルのドライブにはアクセスできません。

とはいえ、どうしてもやりたいということであれば、方法は2つ考えられます。いずれもアップロード先でFTPサーバが動いていることが前提です。


1.VBScript(というよりWSH)を利用する

Windows + IE 限定の方法です。

VBScriptでファイル名検索を行い、FTPスクリプトを生成します。

生成したFTPスクリプトを VBScript(WSH) から下記のように実行して、目的のファイルをアップロードすることができます。

wshshell = new ActiveXObject("WScript.Shell");
wshshell.run("ftp -s スクリプト");

ZIPで圧縮したいなら、検索とftpアップロードの間で zip.exe で圧縮するスクリプトを書いてやればいいでしょう。


2.サーバ間通信を行う

サーバ側の PHP からローカルドライブにアクセスすることができませんが、ローカル側に Apache + PHP の環境を用意してやれば、ローカルのファイル検索ができるようになります。(PHPではなくRubyでも構いません)

PHP の opendir 関数を使うと、ファイル検索ができます。

次に、FTP 関数 を使って FTP アップロードします。

id:upu

1.

アップロード者の負担(技術力)が必要そうですね

あと,OSとブラウザが固定されてしまうのも,望ましくないですね

2.

これも,アップロード者のPCに環境を用意しなければ使えませんよね

2009/03/17 16:44:39

その他の回答(2件)

id:kenz-firespeed No.1

Kenz回答回数104ベストアンサー獲得回数32009/03/12 20:51:58

id:upu

やりたいことの解決にはなってなさそうですが

これは面白そうなので

あとで試してみようと思います

2009/03/17 16:37:27
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332009/03/12 23:00:06ここでベストアンサー

ポイント40pt

upuさんが懸念しているとおり、インターネットに接続しているブラウザがローカルディスクにアクセスすることは、セキュリティ上、好ましいことではありません。

クライアントサイド・プログラムを記述できる JavaScript と系列の ActiveScript(Flash)は、そのようなことができないようになっています。サーバサイド・プログラムである PHP なども、ローカルのドライブにはアクセスできません。

とはいえ、どうしてもやりたいということであれば、方法は2つ考えられます。いずれもアップロード先でFTPサーバが動いていることが前提です。


1.VBScript(というよりWSH)を利用する

Windows + IE 限定の方法です。

VBScriptでファイル名検索を行い、FTPスクリプトを生成します。

生成したFTPスクリプトを VBScript(WSH) から下記のように実行して、目的のファイルをアップロードすることができます。

wshshell = new ActiveXObject("WScript.Shell");
wshshell.run("ftp -s スクリプト");

ZIPで圧縮したいなら、検索とftpアップロードの間で zip.exe で圧縮するスクリプトを書いてやればいいでしょう。


2.サーバ間通信を行う

サーバ側の PHP からローカルドライブにアクセスすることができませんが、ローカル側に Apache + PHP の環境を用意してやれば、ローカルのファイル検索ができるようになります。(PHPではなくRubyでも構いません)

PHP の opendir 関数を使うと、ファイル検索ができます。

次に、FTP 関数 を使って FTP アップロードします。

id:upu

1.

アップロード者の負担(技術力)が必要そうですね

あと,OSとブラウザが固定されてしまうのも,望ましくないですね

2.

これも,アップロード者のPCに環境を用意しなければ使えませんよね

2009/03/17 16:44:39
id:hijk05 No.3

hijk05回答回数1307ベストアンサー獲得回数232009/03/13 01:32:24

ポイント10pt

>・ブラウザから,ローカルのファイル検索をするのは,セキュリティ上よろしくなさそうなので,できない?

FlashやActiveXはできますね。

Flashで作るのが今は一般的なのでは?

id:upu

FlashやActiveXだとできるんですか.

検索してみても,それらしい物を見つけることができません…(;;

2009/03/17 16:52:05
  • id:standard_one
    解決にはならないのでコメントで。
    javaアプレットでフォルダを指定して複数ファイルを送ることは可能です。
    私はファイルを受け取る側の担当だったんで、どんなコードを書いてたのかは全然知りません。
  • id:ku__ra__ge
    webブラウザには何を利用するのでしょうか?
    ActiveXオブジェクトを使ってもいいなら取る方法はありますけど、この方法が使えるのはIEのみです。
  • id:upu
    >standard_oneさん
    javaアプレットならフォルダで指定できるのですか!!
    調べてみようと思います.

    >ku__ra__geさん
    ブラウザ側は,ユーザが選ぶ物ですので,IE固定というわけにはいかなさそうです.

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

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

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

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