私はStrutsを初めて使用し、Strutsを使用してファイルのアップロードに取り組んでいます。
クライアント:apache HttpClient APIを使用してStrutアプリにアクセスし、ファイルを提供するのはJavaプログラムです。クライアントは、必要に応じて、.wavファイルと.zipファイル、およびその両方を提供してくれます。
サーバー:クライアントアプリからリクエストを取得してファイルをアップロードしたStrutsアプリ。
ここで、ファイルをアップロードすると問題が発生します。ファイルは「.tmp」拡張子を使用してアップロードされます。これは、クライアントが渡したのと同じ拡張子でアップロードしたいものです。
または、クライアントが送信したファイルの拡張子を確認する他の方法があります。
私はこの問題で立ち往生していて、先に進むことができません。
添付されているコードを見つけて、どのような変更を行う必要があるか教えてください。
サーバーコード:
MultiPartRequestWrapper multiWrapper=null;
File baseFile=null;
System.out.println("inside do post");
multiWrapper = ((MultiPartRequestWrapper)request);
Enumeration e = multiWrapper.getFileParameterNames();
while (e.hasMoreElements()) {
// get the value of this input tag
String inputValue = (String) e.nextElement();
// Get a File object for the uploaded File
File[] file = multiWrapper.getFiles(inputValue);
// If it's null the upload failed
if (file != null) {
FileInputStream fis=new FileInputStream(file[0]);
System.out.println(file[0].getAbsolutePath());
System.out.println(fis);
int ch;
while((ch=fis.read())!=-1){
System.out.print((char)ch);
}
}
}
System.out.println("III :"+multiWrapper.getParameter("method"));
クライアントコード:
HttpClient client = new HttpClient();
MultipartPostMethod mPost = new MultipartPostMethod(url);
File zipFile = new File("D:\\a.zip");
File wavFile = new File("D:\\b.wav");
mPost.addParameter("recipientFile", zipFile);
mPost.addParameter("promptFile", wavFile);
mPost.addParameter("method", "addCampaign");
statusCode1 = client.executeMethod(mPost);
実際、クライアントは長い間書き戻されており、変更することはできません。サーバー側で何かを識別して、拡張機能を見つけるだけにしたいのです。
助けてください、ありがとう。