使用FileUpload上傳文件的主要Java代碼
import java.io.File; import java.io.IOException; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet {
@SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("--------------upload-----------"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 1024); // 設置緩存大小,單位KB String path = request.getRealPath("/upload"); // 得到當前項目upload目錄的絕對路徑 factory.setRepository(new File(path)); // 設置文件臨時存儲路徑為path ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> list = upload.parseRequest(request); for (FileItem item : list) { // 如果item是普通表單字段 if (item.isFormField()) { String name = item.getFieldName(); // 得到表單字段的name屬性值 String value = item.getString("gbk"); // 得到表單字段值,編碼采用gbk request.setAttribute(name, value); } else { String name = item.getFieldName(); String value = item.getName(); // 得到上傳文件的路徑(根據瀏覽器不同可能會有所差異) int start = value.lastIndexOf("\\"); String fileName = value.substring(start + 1); // 截取最后一個\之后的字符,即行到上傳文件名 request.setAttribute(name, fileName); item.write(new File(path, fileName)); // 在硬盤上寫入文件 // 自己用流寫的方法 // OutputStream os = new FileOutputStream(new // File(path,fileName)); // InputStream is = item.getInputStream(); // byte[] buffer = new byte[500]; // int length = 0; // while((length = is.read(buffer))>0){ // os.write(buffer, 0, length); // } // os.close(); // is.close(); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } request.getRequestDispatcher("upload/result.jsp").forward(request, response); }
}</pre>
本文由用戶 xybw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!