• 项目总结_web文件上传问题


    在web开放过程中总会有文件上传的时候.

    文件上传一般是引用外部的jar包,或者自己写源代码

    外部的jar包邮fileupload, smartupload;

    我天生喜欢原滋原味. 所以我也载了一个大跟头.

    文件上传是需要将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带参数传递过去.这样就能达到想要的效果.

                        <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值,字符乱码的情况;

  • 相关阅读:
    自定义指令directive
    angular中的表单验证
    ng-init,ng-controller,ng-model
    Redis执行lua脚本,key不存在的返回值
    消息队列对比
    数据库设计范式
    网络IO模型
    .NET 线程、线程池
    异步和多线程
    Memcache知识点
  • 原文地址:https://www.cnblogs.com/JohnChen-happy/p/4621785.html
Copyright © 2020-2023  润新知