文件上传

使用commons-fileupload组件上传文件,这个文件依赖于commons-io
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
	<head>
		<title>上传单个文件</title>
	</head>
	<body>
		<form action="uploadServlet" method="post"
			enctype="multipart/form-data">

			上传文件:
			<input type="file" name="file" />
			<p />
				新文件名:
				<input type="text" name="filename" />
				<p />
					<input type="submit" value="上传" style="width: 50px" />
		</form>
	</body>
</html>


servlet代码:
package com.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		try{
			request.setCharacterEncoding("utf-8");
			response.setContentType("text/html;charset=utf-8");
			PrintWriter out = response.getWriter();
			FileItemFactory  fif = new DiskFileItemFactory();
			ServletFileUpload sfu = new ServletFileUpload(fif);
			List<FileItem> items = sfu.parseRequest(request);
			String uploadPath = this.getInitParameter("path");
			String filename = "";
			InputStream is = null;
			for(FileItem item :items){
				if(item.isFormField()){
					if(item.getFieldName().equals("filename")){
						if(!item.getString().equals("")){
							filename = item.getString("utf-8");
						}
					}
				}else if(item.getName()!=null&&!item.getName().equals("")){
					filename = item.getName().substring(item.getName().lastIndexOf("\\")+1);
					is = item.getInputStream();
				}
			}
			filename = uploadPath+filename;
			if((new File(filename)).exists()){
				out.println("该文件已经存在,请为该文件指定一个新的文件名!");
			}else if(!filename.equals("")){
				FileOutputStream fos = new FileOutputStream(filename);
				byte[] buffer = new byte[8192];
				int count = 0;
				while((count = is.read(buffer))>0){
					fos.write(buffer, 0, count);
				}
				fos.close();
				is.close();
				out.println("文件上传成功!");
			}
		}catch (Exception e) {
			System.err.println(e.getMessage());
		}
	}
}

你可能感兴趣的:(文件上传)