ブラウザから,ディレクトリを指定して,条件に当てはまる複数のファイルをアップロードする事が可能か知りたいです.
もしくは,ディレクトリを指定してそのディレクトリ内すべてのファイル(サブディレクトリを含む)をアップロードする事が可能かどうか知りたいです.
PHP,javascript,Ajaxなどの技術でできるとありがたいです.
■やりたい事の例
d:\image\フォルダ(ユーザローカル)の中から .jpgファイルを検索して
条件に当てはまったファイルをすべてアップロードする
もしくは,htmlのフォームのinput type fileにファイル名を入れた状態にする
■思っていること
・ZIPで固めてそれをアップロードしてもらい,サーバで展開し,条件の検索かけるのがスマートかと思うのですが,ユーザにZIPで固める手間をかけさせたくない.
・ブラウザから,ローカルのファイル検索をするのは,セキュリティ上よろしくなさそうなので,できない?
upuさんが懸念しているとおり、インターネットに接続しているブラウザがローカルディスクにアクセスすることは、セキュリティ上、好ましいことではありません。
クライアントサイド・プログラムを記述できる JavaScript と系列の ActiveScript(Flash)は、そのようなことができないようになっています。サーバサイド・プログラムである PHP なども、ローカルのドライブにはアクセスできません。
とはいえ、どうしてもやりたいということであれば、方法は2つ考えられます。いずれもアップロード先でFTPサーバが動いていることが前提です。
Windows + IE 限定の方法です。
VBScriptでファイル名検索を行い、FTPスクリプトを生成します。
生成したFTPスクリプトを VBScript(WSH) から下記のように実行して、目的のファイルをアップロードすることができます。
wshshell = new ActiveXObject("WScript.Shell"); wshshell.run("ftp -s スクリプト");
ZIPで圧縮したいなら、検索とftpアップロードの間で zip.exe で圧縮するスクリプトを書いてやればいいでしょう。
サーバ側の PHP からローカルドライブにアクセスすることができませんが、ローカル側に Apache + PHP の環境を用意してやれば、ローカルのファイル検索ができるようになります。(PHPではなくRubyでも構いません)
PHP の opendir 関数を使うと、ファイル検索ができます。
次に、FTP 関数 を使って FTP アップロードします。
やりたいことの解決にはなってなさそうですが
これは面白そうなので
あとで試してみようと思います
upuさんが懸念しているとおり、インターネットに接続しているブラウザがローカルディスクにアクセスすることは、セキュリティ上、好ましいことではありません。
クライアントサイド・プログラムを記述できる JavaScript と系列の ActiveScript(Flash)は、そのようなことができないようになっています。サーバサイド・プログラムである PHP なども、ローカルのドライブにはアクセスできません。
とはいえ、どうしてもやりたいということであれば、方法は2つ考えられます。いずれもアップロード先でFTPサーバが動いていることが前提です。
Windows + IE 限定の方法です。
VBScriptでファイル名検索を行い、FTPスクリプトを生成します。
生成したFTPスクリプトを VBScript(WSH) から下記のように実行して、目的のファイルをアップロードすることができます。
wshshell = new ActiveXObject("WScript.Shell"); wshshell.run("ftp -s スクリプト");
ZIPで圧縮したいなら、検索とftpアップロードの間で zip.exe で圧縮するスクリプトを書いてやればいいでしょう。
サーバ側の PHP からローカルドライブにアクセスすることができませんが、ローカル側に Apache + PHP の環境を用意してやれば、ローカルのファイル検索ができるようになります。(PHPではなくRubyでも構いません)
PHP の opendir 関数を使うと、ファイル検索ができます。
次に、FTP 関数 を使って FTP アップロードします。
1.
アップロード者の負担(技術力)が必要そうですね
あと,OSとブラウザが固定されてしまうのも,望ましくないですね
2.
これも,アップロード者のPCに環境を用意しなければ使えませんよね
>・ブラウザから,ローカルのファイル検索をするのは,セキュリティ上よろしくなさそうなので,できない?
FlashやActiveXはできますね。
Flashで作るのが今は一般的なのでは?
FlashやActiveXだとできるんですか.
検索してみても,それらしい物を見つけることができません…(;;
1.
アップロード者の負担(技術力)が必要そうですね
あと,OSとブラウザが固定されてしまうのも,望ましくないですね
2.
これも,アップロード者のPCに環境を用意しなければ使えませんよね