確かにそれは可能です。あなたがしなければならないのは2つの部分を実装することです:
- 単一のphpスクリプトで実装されたサーバー側の単純なAPI。ファイルを受け取り、どこかに保存します。セキュリティや妥当性のチェックを追加したいと思うかもしれませんが、それは別の話です。
- 配列を繰り返し、APIを使用して各ファイルを1つずつアップロードするクライアント側の小さなスクリプト。
これで、フォームは不要で、単一のオブジェクトを手動でアップロードする必要もありません。
要求に応じて、簡単な例を追加します。アイデアを示すためだけに、特別なことは何もありません。
サーバーサイドAPI、upload.php
ここで呼び出されるプリミティブphpスクリプト:
<?php
// this is where uploaded files get dumped to
define('FILES_STORAGE','/some/path/writeable/for/http-server');
// $_FILES holds the meta data of the uploaded file as stored temporarily
syslog(LOG_DEBUG,sprintf("upload API accepted file '%s'",$_FILES['filedata']['name']));
// copy file to its final destination (temp file gets removed automatically)
copy ( $_FILES['filedata']['tmp_name'] , FILES_STORAGE.$_FILES['filedata']['name']);
// some feedback to the client, might be ignored
echo sprintf("file '%s' accepted and stored. ", $_FILES['filedata']['tmp_name']);
?>
クライアント側のスクリプト、私は簡単なbashスクリプトを作成しましたが、クライアント側で使用できる任意の言語を使用できます。単一のファイルのみをアップロードしますが、明らかにこれは、ファイルのリストなどを処理するループで実行できます。
#!/bin/bash
curl -i -F name=test -F filedata=@test.png http://api.myserver.org/upload.php
スクリプトを実行すると、ファイルがアップロードされ、APIファイルの先頭でとして定義されているフォルダーに移動されますFILES_STORAGE
。これは概念実証であるため、エラー、セキュリティ、および妥当性のチェックは行われません。