做的项目里的一段代码,看着参考一下吧 有些东西涉及其他的没拷 大概意思应该明白了 写一个jsp页面,有文件上传框的,用MultipartContent 方式提交 再参照下面代码写个servlet 应该就行了 用的包是 fileupload DiskFileUpload uploadFile = new DiskFileUpload(); //no more than 200M uploadFile.setSizeMax(1024*1024*200); //no more than 5M buffer uploadFile.setSizeThreshold(1024*1024*5); //temporary folder File tempFile = new File(getServletContext().getRealPath("/edi/file/temp")); log.info("Set path '" + tempFile.getPath() + "' as temporary directory."); if (!tempFile.exists()) { log.info("Directory '" + tempFile.getPath() + "' does not exist!"); if (!tempFile.mkdirs()) { throw new BusinessException("Failed to create temp directory!"); } log.info("Create directory '" + tempFile.getPath() + "' successfully!"); } uploadFile.setRepositoryPath(tempFile.getAbsolutePath()); //encode type uploadFile.setHeaderEncoding("gb2312");
List fileItems = null; try{ fileItems = uploadFile.parseRequest(request); log.info("Parse request to create a list of " + fileItems.size() + " fileItems."); } catch (FileUploadException e) { throw e; }Iterator it = fileItems.iterator(); while (it.hasNext()) { FileItem fileItem = (FileItem)it.next(); log.info("Begin to deal with FileItem '" + fileItem.getFieldName() + "' : "); if(!fileItem.isFormField()){ try { //get absolute path of uploaded file String pathSrc = fileItem.getName(); log.info("Source path of FileItem on Client is '" + pathSrc + "'."); if (StringUtils.isEmpty(pathSrc)) { throw new BusinessException("Path 'null' cannot be resovled!"); }
log.info("Size of FileItem is " + fileItem.getSize()/1000 + " k."); if (fileItem.getSize() == 0) { log.error("Size of FileItem '" + pathSrc + "' is 0."); throw new BusinessException("Size of FileItem '" + pathSrc + "' is 0."); } else if (StringUtils.isEmpty(fileItem.getString())) { log.error("FileItem '" + pathSrc + "' is empty."); throw new BusinessException("FileItem '" + pathSrc + "' is empty."); } int start = pathSrc.lastIndexOf('\\'); //get file name of uploaded file String fileName = pathSrc.substring(start + 1); log.info("File name is '" + fileName + "'."); if (!isFileNameLegal(fileName)) { log.error("File '" + fileName + "' isn't accepted as System refuses file with a extension '" + getExtension(fileName) + "'"); throw new BusinessException("File '" + fileName + "' isn't accepted as System refuses file with a extension '" + getExtension(fileName) + "'"); }
/* * If folder to place uploaded files does not exist,it will be created. Or do nothing. */ // File dir = new File(SurecompParameter.getEntityParameter().getEdiUploadedFilePath()); File dir = new File(SystemService.getRealPath(SurecompParameter.getEntityParameter().getEdiUploadedFilePath())); log.info("Directory on Server to save files is '" + dir.getPath() + "'."); if(!dir.exists()){ log.info("Directory '" + dir.getPath() + "' isn't exist!"); if(!dir.mkdirs()){ throw new BusinessException("Can not create path for upload!"); } log.info("Create directory '" + dir.getPath() + "' successfully!"); }
// Data file to be uploaded File dataFile = new File(dir, fileName); log.info("System intends to save file as '" + dataFile.getPath() + "'."); int i = 1; while (dataFile.exists()) { log.warn("File name '" + dataFile.getName() + "' already exists in directory '" + dataFile.getParent() + "'."); dataFile = new File(dir, nextFileName(fileName,i)); log.info("File name is changed to '" + dataFile.getName() + "'."); i++; }
// create file if (dataFile.createNewFile()) { log.info("Create data file '" + dataFile.getName() + "' in directory '" + dataFile.getParent() + "'."); try { log.info("Begin to write content to file '" + dataFile.getName() + "'."); fileItem.write(dataFile); log.info("Write content to file '" + dataFile.getName() + "' end."); } catch (Exception e) { log.info("Failed to write content to file '" + dataFile.getName() + "'."); throw new BusinessException(e.getMessage()); } } finally { fileItem.delete(); log.info("Delete FileItem for file '" + fileItem.getName() + "'."); } } else { log.info("FileItem '" + fileItem.getFieldName() + "' isn't a file field! Next ----"); } } //End of while
/** * */ private static final long serialVersionUID = 1L; private static final String CONTENT_TYPE = "text/html;charset=UTF-8"; /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletFileUpload upload = new ServletFileUpload(); upload.setFileItemFactory(new DiskFileItemFactory()); upload.setHeaderEncoding("UTF-8"); response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); try { List items = upload.parseRequest(request); if(items != null){ for(int i = 0 ; i < items.size() ; i ++ ){ FileItem item = (FileItem)items.get(i); if(item.isFormField()){ out.println("表单字段" + item.getFieldName() + "的值为:" + item.getString("UTF-8") + "<br>"); }else{ out.println("表单字段" + item.getFieldName() + "是文件,文件名为:" + item.getName() + ",文件内容为:<br>"); out.println(item.getString("gb2312")); } } } } catch (FileUploadException e) { out.println("文件上传失败<br>"); e.printStackTrace(out); } out.flush(); out.close(); }}
大概意思应该明白了
写一个jsp页面,有文件上传框的,用MultipartContent 方式提交
再参照下面代码写个servlet 应该就行了
用的包是 fileupload
DiskFileUpload uploadFile = new DiskFileUpload();
//no more than 200M
uploadFile.setSizeMax(1024*1024*200);
//no more than 5M buffer
uploadFile.setSizeThreshold(1024*1024*5);
//temporary folder
File tempFile = new File(getServletContext().getRealPath("/edi/file/temp"));
log.info("Set path '" + tempFile.getPath() + "' as temporary directory.");
if (!tempFile.exists()) {
log.info("Directory '" + tempFile.getPath() + "' does not exist!");
if (!tempFile.mkdirs()) {
throw new BusinessException("Failed to create temp directory!");
}
log.info("Create directory '" + tempFile.getPath() + "' successfully!");
}
uploadFile.setRepositoryPath(tempFile.getAbsolutePath());
//encode type
uploadFile.setHeaderEncoding("gb2312");
List fileItems = null;
try{
fileItems = uploadFile.parseRequest(request);
log.info("Parse request to create a list of " + fileItems.size() + " fileItems.");
} catch (FileUploadException e) {
throw e;
}Iterator it = fileItems.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem)it.next();
log.info("Begin to deal with FileItem '" + fileItem.getFieldName() + "' : ");
if(!fileItem.isFormField()){
try {
//get absolute path of uploaded file
String pathSrc = fileItem.getName();
log.info("Source path of FileItem on Client is '" + pathSrc + "'.");
if (StringUtils.isEmpty(pathSrc)) {
throw new BusinessException("Path 'null' cannot be resovled!");
}
log.info("Size of FileItem is " + fileItem.getSize()/1000 + " k.");
if (fileItem.getSize() == 0) {
log.error("Size of FileItem '" + pathSrc + "' is 0.");
throw new BusinessException("Size of FileItem '" + pathSrc + "' is 0.");
} else if (StringUtils.isEmpty(fileItem.getString())) {
log.error("FileItem '" + pathSrc + "' is empty.");
throw new BusinessException("FileItem '" + pathSrc + "' is empty.");
}
int start = pathSrc.lastIndexOf('\\');
//get file name of uploaded file
String fileName = pathSrc.substring(start + 1);
log.info("File name is '" + fileName + "'.");
if (!isFileNameLegal(fileName)) {
log.error("File '" + fileName + "' isn't accepted as System refuses file with a extension '" + getExtension(fileName) + "'");
throw new BusinessException("File '" + fileName + "' isn't accepted as System refuses file with a extension '" + getExtension(fileName) + "'");
}
/*
* If folder to place uploaded files does not exist,it will be created. Or do nothing.
*/
// File dir = new File(SurecompParameter.getEntityParameter().getEdiUploadedFilePath());
File dir = new File(SystemService.getRealPath(SurecompParameter.getEntityParameter().getEdiUploadedFilePath()));
log.info("Directory on Server to save files is '" + dir.getPath() + "'.");
if(!dir.exists()){
log.info("Directory '" + dir.getPath() + "' isn't exist!");
if(!dir.mkdirs()){
throw new BusinessException("Can not create path for upload!");
}
log.info("Create directory '" + dir.getPath() + "' successfully!");
}
// Data file to be uploaded
File dataFile = new File(dir, fileName);
log.info("System intends to save file as '" + dataFile.getPath() + "'.");
int i = 1;
while (dataFile.exists()) {
log.warn("File name '" + dataFile.getName() + "' already exists in directory '" + dataFile.getParent() + "'.");
dataFile = new File(dir, nextFileName(fileName,i));
log.info("File name is changed to '" + dataFile.getName() + "'.");
i++;
}
// create file
if (dataFile.createNewFile()) {
log.info("Create data file '" + dataFile.getName() + "' in directory '" + dataFile.getParent() + "'.");
try {
log.info("Begin to write content to file '" + dataFile.getName() + "'.");
fileItem.write(dataFile);
log.info("Write content to file '" + dataFile.getName() + "' end.");
} catch (Exception e) {
log.info("Failed to write content to file '" + dataFile.getName() + "'.");
throw new BusinessException(e.getMessage());
}
} finally {
fileItem.delete();
log.info("Delete FileItem for file '" + fileItem.getName() + "'.");
}
} else {
log.info("FileItem '" + fileItem.getFieldName() + "' isn't a file field! Next ----");
}
} //End of while
package om.fileupload.zhangc;import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class FileUpLoadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String CONTENT_TYPE = "text/html;charset=UTF-8";
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletFileUpload upload = new ServletFileUpload();
upload.setFileItemFactory(new DiskFileItemFactory());
upload.setHeaderEncoding("UTF-8");
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
try {
List items = upload.parseRequest(request);
if(items != null){
for(int i = 0 ; i < items.size() ; i ++ ){
FileItem item = (FileItem)items.get(i);
if(item.isFormField()){
out.println("表单字段" + item.getFieldName() + "的值为:" + item.getString("UTF-8") + "<br>");
}else{
out.println("表单字段" + item.getFieldName() + "是文件,文件名为:" + item.getName() + ",文件内容为:<br>");
out.println(item.getString("gb2312"));
}
}
}
} catch (FileUploadException e) {
out.println("文件上传失败<br>");
e.printStackTrace(out);
}
out.flush();
out.close();
}}