ホーム » ブログ » struts2で画像ファイルアップロードサンプル
このエントリーをはてなブックマークに追加
@2014/05/01
前提:java+struts2、且つ、commons-fileupload-1.x.x.jarとcommons-io-2.x.x.jarはすでにWebContent\WEB-INF\lib\に配置。

例:画像ファイルをアップロード(一回で1つのファイル)

いきなり、JSP(HTML)ソースコードの抜粋
<html>
<head>
<title>画像アップロード</title>
</head>
<body>

<form id="imageFileTransmitForm" name="imageFileTransmitForm" action="ImageFileTransmit!fileUpload.do" enctype="multipart/form-data" method="post">		
	<table width="90%" border="0" cellspacing="2" cellpadding="3" align="center">  
            <tr bgcolor="f5f5f5">  
                <td width="22%">  
                    <div align="right">画像:</div>  
                </td>  
                <td width="78%">
			<input type="file" name="form.uploadFile" />  
                </td>  
            </tr>  
        </table> 
		
	<input type="submit" value="画像をアップロードする">
</form>

</body>
</html>

続いて、action側のコードの抜粋
public class ImageFileTransmitAction extends BaseAction {

	private static final long serialVersionUID = 1L;
	
	
	ImageFileTransmitForm form = new ImageFileTransmitForm();

	long fileMaxSize = 2097152;//2MB
	
	String realPath = ServletActionContext.getServletContext().getRealPath("/image");  
	
	public String doInit() throws SystemException {
		
		return INPUT;
	}

	public String doFileUpload() throws SystemException {
		
		
		String uploadFileFileName = form.getUploadFileFileName();
		
		//uploadFileFileName = uploadFileFileName.substring(uploadFileFileName.lastIndexOf('.')); 
		//イメージファイルじゃない場合、異常を返す
		if(!isImageFile(form.getUploadFileContentType())) {
			// return error;//TODO
		}
		// 空ファイル、またはファイルサイズ2M以上の場合、異常を返す
		if(form.getUploadFile() == null || form.getUploadFile().length()>fileMaxSize) {
			// return maxSizeError;//TODO
		}
		
		File filePath = new File(new File(realPath), uploadFileFileName);
		// ディレクトリ存在しない場合、新なディレクトリを作成
		if(!filePath.getParentFile().exists()) {
			filePath.getParentFile().mkdirs();
		}
		
		 try {  
			// ★コピーを実施
            		 FileUtils.copyFile(form.getUploadFile(), filePath);  
	         } catch (IOException e) {  
	             System.out.println("画像がアップロードできませんでした。");   
	             e.printStackTrace();  
	         } 
		
		return "uploadSuccess";
	}
	
	
	/**
	 * 
	 * @param extension
	 *             ファイルの拡張子
	 * @return
	 */
	private boolean isImageFile(String extension) {

		return (extension.equals("image/gif") 
				|| extension.equals("image/jpeg")
				|| extension.equals("image/png")
				|| extension.equals("image/bmp")
				|| extension.equals("image/x-icon") 
				|| extension.equals("image/pjpeg"));

	}

	/**
	 * @return the form
	 */
	public ImageFileTransmitForm getForm() {
		return form;
	}


	/**
	 * @param form the form to set
	 */
	public void setForm(ImageFileTransmitForm form) {
		this.form = form;
	}

}

その他、actionFormのコードの抜粋
package jp.guider.tool.demo.form;

import java.io.File;

public class ImageFileTransmitForm extends BaseForm {
	/** ファイル */
	private File uploadFile;
	/** ファイルの拡張子 */
	private String uploadFileContentType;
	/** ファイル名称 */
	private String uploadFileFileName;

	/**
	 * @return the uploadFile
	 */
	public File getUploadFile() {
		return uploadFile;
	}

	/**
	 * @param uploadFile
	 *            the uploadFile to set
	 */
	public void setUploadFile(File uploadFile) {
		this.uploadFile = uploadFile;
	}

	/**
	 * @return the uploadFileContentType
	 */
	public String getUploadFileContentType() {
		return uploadFileContentType;
	}

	/**
	 * @param uploadFileContentType
	 *            the uploadFileContentType to set
	 */
	public void setUploadFileContentType(String uploadFileContentType) {
		this.uploadFileContentType = uploadFileContentType;
	}

	/**
	 * @return the uploadFileFileName
	 */
	public String getUploadFileFileName() {
		return uploadFileFileName;
	}

	/**
	 * @param uploadFileFileName
	 *            the uploadFileFileName to set
	 */
	public void setUploadFileFileName(String uploadFileFileName) {
		this.uploadFileFileName = uploadFileFileName;
	}

}

以上で非常に簡単に、Struts2で画像ファイルをアップロード機能が実現しました。

※複数の画像ファイルを一括でアップロードする方法もあります。後程、別の記事で掲載します。



♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
3人
このエントリーをはてなブックマークに追加


◎zanmai.netサイト記事の転載・複製(コピー)は、zanmai.netへのリンクであることを明記してください!
◎本記事URL: http://www.zanmai.net/blog/data/192.html

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

アーカイブ @zanmai.net
check