文件上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传相关的知识,希望对你有一定的参考价值。

一、用Commons-FileUpload组件实现文件上传

1.导入两个jar包

FileUpload下载地址:

  http://commons.apache.org/fileupload/

  下载:commons-fileupload-1.2.2-bin.zip    得到:commons-fileupload-1.2.2.jar

  http://commons.apache.org/io/

  下载:commons-io-1.4-bin.zip       得到:commons-io-1.4.jar

2、设置表单的属性设置以及使用file设置选择文件,提交地址是test.jsp

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

如图所示:

 

3、创建test.jsp页面,文件上传到upload文件夹中,实现上传功能

<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.*" %>
<%@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.setCharacterEncoding("utf-8");
//判断是普通表单还是文件上传
boolean flag=ServletFileUpload.isMultipartContent(request);
if(flag)
{
     //定义一个解析器,来解析请求中的各个项目
    DiskFileItemFactory factory=new DiskFileItemFactory();    
    //解析upload创建成功
    ServletFileUpload upload=new ServletFileUpload(factory);
    List<FileItem>fileList=upload.parseRequest(request);
    //每一个fileItem都代表一个表单元素
    Iterator<FileItem> myitor=fileList.iterator();
    while(myitor.hasNext())
    {
        FileItem item=myitor.next();
        if(item!=null)
        {
            if(item.isFormField())
            {
                 //获取该表单元素内容(value值)
                String name=item.getFieldName();
                 //表单的name属性而不是value值
                if(name.equals("username"))
                {
                    out.print(item.getString("utf-8"));                    
                }              
            }
            else
            {
                String filename=item.getName();
                //服务器目录下 相对路径
                String path="/WEB-INF/upload/";
                //转换为绝对路径
                String absolutepath=this.getServletContext().getRealPath(path);           
                File file=new File(filename);
                File uploadFile=new File(absolutepath,file.getName());
                item.write(uploadFile);            
                out.print("上传成功!");
            }        
        } 
    }
}
%>

 

以上是关于文件上传的主要内容,如果未能解决你的问题,请参考以下文章

将存储在内存中的文件上传到s3

JS创建文件并上传服务器

ajaxFileUpload上传带参数文件及JS验证文件大小

android的自带的httpClient 怎么上传文件

大文件上传下载实现思路,分片断点续传代码实现,以及webUpload组件

如何通过 HttpWebRequest 上传文件?