1. 程式人生 > >enctype="multipart/form-data"導致text表單項失效的問題

enctype="multipart/form-data"導致text表單項失效的問題

為了上傳檔案表單項,在form表單項上設定屬性enctype="multipart/form-data"導致text表單項無法傳值

原因:

表單中enctype=”multipart/form-data”的意思,是設定表單的MIME編碼。預設情況,這個編碼格式是application/x-www-form-urlencoded,不能用於檔案上傳;只有使用了multipart/form- data,才能完整的傳遞檔案資料,進行下面的操作.這時候這時如果用request是無法直接獲取到相應表單的值的

解決方法:

1:設定form表單項屬性為enctype=\”multipart/form-data\”

2:利用pareRequest解析

public void execute1(HttpServletRequest request) throws IOException {
    DiskFileItemFactory factroy = new DiskFileItemFactory(); 
    //建立檔案上傳解析器                                       
    ServletFileUpload upload = new ServletFileUpload(factroy);
    //使用解析器解析上傳的表單資料,每個FileItem對應一個表單項
    List<FileItem> fileItemList = upload.parseRequest(request);
    for (FileItem fileItem : fileItemList) { 
    if (!fileItem.isFormField()) { 
    //不是普通的表單項,即是上傳的是檔案 
    //獲取檔名稱 
    String fileName = fileItem.getNname();
    ...
    ..
    .}
    else{
        /**
        * 獲取表單中的非檔案值
        */ 
        //表單中的空間name值 
        System.out.println(fileItem.getFieldName()); //該name值空間中的value值
        System.out.println(fileItem.getString("UTF-8"));
    }