ファイルのアップロード
次はfileuploadでファイルをアップロードする簡単なツールクラスです.
Javaコード import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileUpload; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.disk.DiskFileItemFactory; public class UpLoadUtil2 { public static String upload(HttpServletRequest request){ String msg = null; try{ boolean isMultipart = FileUploadBase.isMultipartContent(request); if(isMultipart){//Formがmultipart formであるかどうかを判断する FileItemFactory fileItemFactory = new DiskFileItemFactory();//工場設置 FileUpload fileUpload = new FileUpload(fileItemFactory);//アップロードコンポーネント //ここは中国語のファイル名処理のコードで、実は1行だけあって、setHeaderEncodingは fileUpload.setHeaderEncoding("utf-8"); List fileItemList = fileUpload.parseRequest(request);//解析アップロードファイルパケット for(int i=0;i FileItem fileItem = (FileItem)fileItemList.get(i);//各アップロードファイル を巡回する if(!file Item.isFormField(){//アップロードされたファイルかどうかを判断 String fullFileName = fileItem.getName();//ファイルフルネーム String fileName = getFileName(fullFileName);//ファイル名 //設定ファイルサーバに格納されたパス String path = request.getRealPath("/upload"); if(!new File(path).isDirectory()/存在しない場合は、ディレクトリ を作成します. new File(path).mkdirs(); File file = new File(path, fileName); fileItem.write(file); msg = file.getAbsolutePath(); } } } }catch(Exception e){ e.printStackTrace(); } return msg; } public static String getFileName(String fullFileName){ String fileName = fullFileName.substring(fullFileName.lastIndexOf("//")+1); return fileName; } }
上記uploadメソッドにrequestオブジェクトパラメータが入力され、fileuploadコンポーネントはrequestを解析することによってアップロードファイルを得る.
次は、アップロードファイルリクエストを送信するためのページのコードの一部です.
Htmlコード <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> My JSP 'uploadExcel.jsp' starting page function tosubmit(){ var filename = document.getElementById('fileid').value; if(filename =='' || filename == null){ alert(「アップロードするファイルを先に選択してください」); }else{ window.document.form1.submit(); } } action="<%=request.getContextPath()%>/uploadExcelServlet" enctype="multipart/form-data" >
アップロードするファイルを選択: onclick="tosubmit()">
Javaコード
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class UpLoadUtil2 {
public static String upload(HttpServletRequest request){
String msg = null;
try{
boolean isMultipart = FileUploadBase.isMultipartContent(request);
if(isMultipart){// Form multipart form
FileItemFactory fileItemFactory = new DiskFileItemFactory();//
FileUpload fileUpload = new FileUpload(fileItemFactory);//
// , ,setHeaderEncoding
fileUpload.setHeaderEncoding("utf-8");
List fileItemList = fileUpload.parseRequest(request);//
for(int i=0;i<fileItemList.size();i++){
FileItem fileItem = (FileItem)fileItemList.get(i);//
if(!fileItem.isFormField()){//
String fullFileName = fileItem.getName();//
String fileName = getFileName(fullFileName);//
//
String path = request.getRealPath("/upload");
if(!new File(path).isDirectory())// ,
new File(path).mkdirs();
File file = new File(path, fileName);
fileItem.write(file);
msg = file.getAbsolutePath();
}
}
}
}catch(Exception e){
e.printStackTrace();
}
return msg;
}
public static String getFileName(String fullFileName){
String fileName = fullFileName.substring(fullFileName.lastIndexOf("//")+1);
return fileName;
}
}
上記uploadメソッドにrequestオブジェクトパラメータが入力され、fileuploadコンポーネントはrequestを解析することによってアップロードファイルを得る.
次は、アップロードファイルリクエストを送信するためのページのコードの一部です.
Htmlコード