サーバー側からの入力としてWord docを取得し(Aなど)、それをPDFに変換する別のAPI(Bなど)に投稿するJavaScript APIを作成しようとしています。私がこれを行っている理由は、各 A API を変更する代わりに、任意の A に対して B への呼び出しを使用できるようにするためです (単語ドキュメントを提供する複数の As があります)。
これは私がこれまで行ってきたことです。問題は、B を呼び出しているときに、送信しているファイルを取得できないことです。
これが私のコードです。
サーバーへのJavaScript呼び出し.
$("#downloadFile").click(function(){
$.ajax({
url : "/fileDownload.action",
success : function(data){
handleFile(data);
}
});
});
});
function handleFile(inputFile){
$.ajax({
url : "/convertFile.action",
type : "POST",
data : {inputFile : inputFile },
cache:false,
processData:false,
contentType: "application/msword",
success : function(data){
alert("yay?");
}
});
}
"/convertFile.action" のサーバー側 (Struts 2.3 アクション クラス) には、setInputFile(File inputFile)
リクエストからファイルを設定するメソッドがあります。ただし、ファイルの設定ではありません。
HTMLのフォームで標準のファイルアップロードを使用すると、ファイルが設定されます(ただし、javascriptはなく、プレーンなhtmlとサーバー側のコードのみです)。
また、Ajax 呼び出しなしでフォームと投稿を作成しようとすると、同じ結果が得られます。この回答のjsを使用してフォームを投稿しようとしました。
私は何を間違っていますか?1 つの可能性は、入力を文字列またはストリームとして取得する必要があることです。しかし、私が間違っている/違反している/できないことは他にありますか?