項目總結_web文件上傳問題

在web開放過程當中總會有文件上傳的時候.javascript

文件上傳通常是引用外部的jar包,或者本身寫源代碼java

外部的jar包郵fileupload, smartupload;web

我天生喜歡原滋原味. 因此我也載了一個大跟頭.session

 

文件上傳是須要將form的 enctype屬性改成multipart/form-data   默認的enctype屬性是application/x-www-form-urlencoded, 默認的屬性只能傳通常的數據.不能用於傳文件等.在使用默認的屬性值時能夠使用request.getParameter("name")來獲取form表單裏面name="name"的標籤的value.可是當enctype變爲multipart/form-data時request.getParameter("name")就不能使用了,一直的null. 網上有使用外部的jar包來從新使得request.getParameter()能從新使用.可是我這裏比較簡單. 就只是簡單的用js改變action屬性值  讓url帶參數傳遞過去.這樣就能達到想要的效果.app

 

                    <form action="DoRemoteServlet" method="post" enctype="multipart/form-data" onsubmit="return testSelect(this)">
                        經過審覈的實驗:<select name="exp1" id="exp1">
                        <%
                        LinkedList<Experiment> oer = (LinkedList<Experiment>)session.getAttribute("ExperimentsResults");
                        Iterator<Experiment> iterator=oer.iterator();
                        while(iterator.hasNext()){
                            Experiment e=iterator.next();
                        
                        %>
                            <option value="<%=e.getName() %>"> <%=e.getName() %></option>
                        <%
                        }
                        %>
                        </select>
                        <div class="clear"></div>
                        <br>
                        <br>
                        源代碼文件:<input type="file" name="file"/>
                        <br>
                        <div class="clear"></div>
                        <br><br>
                        <div></div>
                           <button type="submit">上傳</button>
                    </form>
<script type="text/javascript">
    function select(fm){
        var select=document.getElementById('exp1');//定位id
        var index=select.selectedIndex;// 選中索引
        var text = select.options[index].text;// 選中文本
        var value = select.options[index].value; // 選中值
alert("text:"+text+" value:"+value);
        fm.action = fm.action + "?exp1name=" + value;
        return true;
    }
</script>

 

servlet
    String expName = new String(request.getParameter("exp1name").getBytes("ISO-8859-1"),"UTF-8" );
System.out.println("doRemoteServlet:"+expName);

注意servlet值,字符亂碼的狀況;post

相關文章
相關標籤/搜索