zoukankan      html  css  js  c++  java
  • 文件上传功能的实现

    一:文件上传功能

    先要在在index.jsp的界面上初始化一个表单。

    代码如下:


    <body>
    <form enctype="multipart/form-data" action="<%=path%>/1.jsp" method="post">
    姓名:<input type="text" name="username"/>
    选择文件:<input type="file" name="myfile"/>
    <input type="submit" value="提交"/>
    </form>

    :enctype=多部分的表单数据,并且如果form表单的属性中多了enctype="multipart/form-data",是不能使用request.getParameter(name属性的)

    在WEB-ROOT的根目录下创建一个1.jsp,实现文件上传功能!
    代码如下:

    <%@page import="java.io.File"%>
    <%@page import="org.apache.commons.fileupload.FileItem"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    //判定request请求的类型
    request.setCharacterEncoding("utf-8");
    boolean flag= ServletFileUpload.isMultipartContent(request);
    if(flag)
    {
    DiskFileItemFactory factory=new DiskFileItemFactory();
    //找到一个解析器,解析请求中的各个项目
    ServletFileUpload upload=new ServletFileUpload(factory);//解析器的创建
    List<FileItem> list=upload.parseRequest(request);//使用解析器解析请求的数据
    Iterator<FileItem> myitor= list.iterator();//自动迭代的功能
    while(myitor.hasNext())
    {
    FileItem item=myitor.next();
    if(item!=null)
    {
    //判断FileItem对象封装的数据类型,文件表单或普通表单字段
    if(item.isFormField())//普通表单
    {
    String name= item.getFieldName();//获取表单的name属性
    if(name.equals("username"))
    {
    out.print(item.getString("utf-8"));
    }
    }
    else
    {
    String name=item.getName();//获得文件名
    out.print(name);
    String path="/WEB-INF/upload/";//相对路径名
    String path2=this.getServletContext().getRealPath(path);//通过相对路径名来获得绝对路径名
    out.print(path2);
    File file=new File(name);
    File uploadpath=new File(path2,file.getName());
    item.write(uploadpath);//向该路径写入文件
    out.print("上传成功");
    }
    }
    }
    }

  • 相关阅读:
    C# 使用HtmlAgilityPack抓取网页信息
    企业微信开发之向员工付款(C#)
    企业微信开发之发放企业红包(C#)
    body-parser的使用
    NodeJs的express服务器报413 payload too large错误
    'nuxt' 不是内部或外部命令,也不是可运行的程序
    Linux node使用npm成功安装命令后,执行时却报找不到命令的问题
    npm查看全局安装了那些包的命令
    JS中==与===的区别
    JS事件流理解
  • 原文地址:https://www.cnblogs.com/hero96/p/5639470.html
Copyright © 2011-2022 走看看