通過form表單上傳文件(多文本框,多圖片的),后台接收的方法


 單純form表單提交   上傳文件時,form表單應加上參數  enctype="multipart/form-data

 

 后台接收時的代碼:將表單數據封裝進 list集合中

package com.jredu.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.jredu.model.User;
import com.jredu.service.UserService;
import com.jredu.service.Impl.UserServiceImpl;

@WebServlet("/register.action")
public class Register extends HttpServlet {

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        UserService service = new UserServiceImpl();
        // 創建磁盤工廠 緩沖區和磁盤目錄
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // 設置文件上傳的大小限制
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024 * 1024 * 10);// 最大上傳10M
        upload.setHeaderEncoding("utf-8");// 設置編碼格式
        try {
            String name = null;
            // 注冊獲取前台的值
            String value = null;
            String newName = null;
            ArrayList<Object> list = new ArrayList<Object>();
            @SuppressWarnings("unchecked")
            List<FileItem> files = upload.parseRequest(req);
            for (FileItem fileItem : files) {
                // 判斷當前的數據時文件還是普通的表單
               
                if (fileItem.isFormField()) { // 是文件
                    name = fileItem.getFieldName();// 獲取屬性的名字
                    value = fileItem.getString("utf-8");// 獲取屬性的值
                    list.add(value);
                } else {// 是表單
                    // 獲取文件上傳的文件名
                    name = fileItem.getName();

                    // 定義一個新的文件來接收
                    newName = System.currentTimeMillis() + name;// 以當前的總秒數來命名防止圖片名稱相同而覆蓋
                    File file = new File("D:\\image\\" + newName);

                    // 圖片的存儲路徑
                    String headImg = "img/" + newName;
                    list.add(headImg);
                    // 從緩沖區寫入磁盤
                    fileItem.write(file);
                    fileItem.delete();
                }

            }

            // 獲取到全部的用戶列表
            List<User> uList = service.allUser();

            // 將新注冊的用戶存入數據
            boolean flag = service.register(list);

            if (flag) {
                System.out.println("注冊成功");

                // 跳轉到登陸界面
                req.getRequestDispatcher("/page/login.jsp").forward(req, resp);

            } else {
                System.out.println("注冊失敗");
            }

        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM