ブラウジングでアップロードされたファイルを読み込もうとしています。そのために、Apache Commons fileupload jar を使用しています。したがって、プロジェクト アプリケーションで実行する前に、ファイルを正常に読み取るサーブレット/jsp POC プロジェクトを実行するだけです。以下はコードです、
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = FileUpload.isMultipartContent(request);
String content = "";
try {
if (isMultipart) {
FileItemFactory factory = new DefaultFileItemFactory();
FileUploadBase upload = new FileUpload(factory);
String[] arr;
List items;
items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
BufferedInputStream buff = new BufferedInputStream(
item.getInputStream());
byte[] bytes = new byte[buff.available()];
buff.read(bytes, 0, bytes.length);
content = new String(bytes);
arr = content.split(",");
}
}
}
request.getRequestDispatcher("success.jsp").forward(request,
response);
} catch (FileUploadException e) {
}
プロジェクトディレクトリにそのバージョンのjarがあり、Java 1.4を使用しているため、jarバージョン1.1を使用しました。Java 1.5 では、 FileUpload の代わりに ServletFileUpload を使用することを想定しています。しかし、以前のバージョンのjarでどこで作業できるかは問題ではないと思います。
struts 1.1を使用する実際のアプリケーションで使用すると問題が発生します。すべて問題ないようですが、リクエストを解析するときにアイテムを返しません。
アイテム = upload.parseRequest(リクエスト);
項目はここでは空です。
したがって、私が見つけることができる違いは、結果を示すPOCプロジェクトが、実際のアプリケーションがStrutsを使用しているJSP /サーブレットプロジェクトであることです。
この場合、JSP/Servlet と Struts プロジェクトでリクエストは異なりますか?
どちらの場合も、フォームで以下を使用します。
<form action="SampleWeb" method="post" enctype="multipart/form-data">
<input type="file" name="datafile" size="40">
<input type="submit" value="Submit">
以下は、Struts アプリケーションでの唯一の追加です。
<action
path="/ReportsAction"
type="come.test.ReportsAction"
name="ReportsForm"
scope="request"
validate="false"
parameter="dispatch">
<forward name="success" path="/reports/A.jsp"/>
<forward name="updatesuccess" path="/common/B.jsp"/>
</action>