If your appliction need a feature to upload file , why don't you try a frame , that is called fileupload from apache . I trongly recommended that you try maven also from apache .
configure pom.xml file with dependecy like below :
we have add maven jar to our project already .
Next , write a servlet class .
OK, we can use the servlet to upload file from client to server . try it , have fun .
configure pom.xml file with dependecy like below :
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.2.1</version>
- </dependency>
Next , write a servlet class .
- package com.captech.server.service.common;
- import java.io.File;
- import java.util.Iterator;
- import java.util.List;
- 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;
- import com.captech.server.service.license.ProductLicenseServiceImpl;
- /**
- * This class is not for user , but for tomcat ( It is a servlet).
- *
- * @author WeiXing
- *
- */
- public class FileUploader extends HttpServlet{
- private static final long serialVersionUID = 8375418953160288723L;
- private String uploadPath;
- private int maxPostSize = 100 * 1024 * 1024;
- private ProductLicenseServiceImpl service ;
- public ProductLicenseServiceImpl getService() {
- return service;
- }
- public void setService(ProductLicenseServiceImpl service) {
- this.service = service;
- }
- public void init(){
- // this.getServletContext().getRealPath("/") is get servlet container 's real path .
- uploadPath = this.getServletContext().getRealPath("/") + getInitParameter("UPLOADPARAM");
- }
- @SuppressWarnings("unchecked")
- public void doPost(HttpServletRequest req, HttpServletResponse res) {
- res.setContentType("text/html; charset=UTF-8");
- DiskFileItemFactory factory = new DiskFileItemFactory();
- factory.setSizeThreshold(4096);
- ServletFileUpload upload = new ServletFileUpload(factory);
- upload.setSizeMax(maxPostSize);
- try {
- List fileItems = upload.parseRequest(req);
- Iterator iter = fileItems.iterator();
- String name;
- File file = null ;
- while (iter.hasNext()) {
- FileItem item = (FileItem) iter.next();
- if (!item.isFormField()) {
- name = item.getName();
- try {
- String fullName = uploadPath + name ;
- file = new File(fullName);
- ProductLicenseServiceImpl.setKeyPath(uploadPath);
- file.createNewFile();
- item.write(file);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- } catch (FileUploadException e) {
- e.printStackTrace();
- }
- }
- }
OK, we can use the servlet to upload file from client to server . try it , have fun .