リファレンストップへ Java | ファイルアップロード使用した環境 JDK 6 Update 11 struts 1.3.10 strutsのファイルアップロード機能のサンプルです。まず、struts-configのcontrollerタグで以下のように指定します。 struts-config内にcontrollerタグがない場合は新たに追加してください。この際、controllerタグは、</action-mappings>と<message-resources />の間に記述しなければなりませんので注意してください。 <controller maxFileSize="1024K" memFileSize="256K" tempDir="c:/temp" bufferSize="4096" /> それぞれの属性の意味は以下のようになります。必要に応じて書き換えてください。
フォームでは、以下のようにアップロードファイルを受け取るプロパティの型をorg.apache.struts.upload.FormFileにします。 import org.apache.struts.upload.FormFile; public class SampleForm extends ActionForm { /** アップロードファイル */ private FormFile uploadFile; ※ 以下setter, getter } JSPでは、以下のように記述します。 <html:form action="/sample" enctype="multipart/form-data"> <html:form>タグでenctype属性を"multipart/form-data"と指定し、マルチパート形式のリクエスト送信を指定する事で、ファイルのアップロードが行えるようになります。<html:file property="uploadFile" /> <html:submit value="アップロード" /> </html:form> 以下は、アップロードされたファイルを処理するアクションです。 サンプル処理として、アップロードされたファイルをサーバのローカルディスクに保存する処理を行っています。 public class SampleAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form0, ... SampleForm form = (SampleForm) form0; // アップロードファイル情報を取得 FormFile uploadFile = form.getUploadFile(); // アップロードされたファイル名を取得 String fileName = uploadFile.getFileName(); // アップロードされたファイルのサイズを取得 int fileSize = uploadFile.getFileSize(); // ファイルサイズが0の場合はファイルがアップロードされていないので、0より大きい場合のみ処理を行う if (fileSize > 0) { // アップロードされたファイルをサーバ上のローカルディスクに保存する。 InputStream in = null; FileOutputStream out = null; try { in = uploadFile.getInputStream(); out = new FileOutputStream("【ファイル保存先のパスを指定】"); byte[] buffer = new byte[1024]; int readed = -1; while ((readed = in.read(buffer)) != -1) { out.write(buffer, 0, readed); } } finally { try { in.close(); } catch (Exception e) {} try { out.close(); } catch (Exception e) {} // 一時ディレクトリに保存されたアップロードファイルの削除を行う uploadFile.destroy(); } } return mapping.findForward("success"); } } |
|