私は最近、ユーザーがドキュメントをアップロードし、それをサーバーにストリーミングし、サーバーに保存せずにストリームを SOAP サーバーに投稿できるソリューションを実装する必要があるという問題がありました。
私がそれを実装した方法は次のとおりです。
アップロードの進行状況を表示するために、AJAX 経由でファイルをアップロードしたかったのです。
これが私の解決策です (これは一度に 1 つのファイルにしか対応していないことに注意してください。ただし、出発点になる可能性があります。)
JavaScript:
最初に FormData のオブジェクトを宣言します。これは、ファイルとともに追加情報を送信するために使用されます。
var formData = new FormData();
次に、サーバーに送信するすべてのデータを追加します。
formData.append("documentDescription", $("#documentDescription textarea").val());
formData.append("afile", file.files[0]);
XMLHttpRequest の新しいインスタンスを作成します。
var xhr = new XMLHttpRequest();
これは、すべてが機能する残りのコードです。
xhr.open("POST", "UploadDocumentURL", true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
$('.progress .bar').css('width', percentComplete + '%').attr('aria-valuenow', percentComplete);
}
}
xhr.onload = function() {
if (this.status == 200) {
var resp = JSON.parse(this.response);
if (resp.type === "error") {
notify.add(resp.type, "Error", resp.message, 3000, true);
} else {
notify.add(resp.type, "Success", resp.message, 3000);
}
}
;
};
xhr.send(formData);
PHP
$documentName = $_POST["documentDescription"];
$fileName = $_FILES['afile']['name'];
$fileType = $_FILES['afile']['type'];
$ext = pathinfo($fileName, PATHINFO_EXTENSION);
$fileName = pathinfo($fileName, PATHINFO_FILENAME);
$fileContent = file_get_contents($_FILES['afile']['tmp_name']);
これで、サーバー上にバイナリ データが作成されます。
file.files[0]
JavaScript でループすることにより、複数のファイルに対してこれを機能させることができるはずです。
これをあなたの問題に適用できることを願っています。