欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现文件的上传功能

程序员文章站 2022-06-18 11:02:50
本文实例为大家分享了java实现文件的上传功能的具体代码,供大家参考,具体内容如下直接上代码了一、上传界面<%@ page language="java" contenttype="text/h...

本文实例为大家分享了java实现文件的上传功能的具体代码,供大家参考,具体内容如下

直接上代码了

一、上传界面

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>insert title here</title>
</head>
<body>
  <!-- 文件上传对表单的要求
  1、表单中的请求和提交的方式必须是post
  2、 表单中应该指定提交的请求为multipart 请求 ,通过在form表单中添加enctype属性
   为multipart/form-data
   3、表单中要有file元素
   
  
   -->
  <!-- ${pagecontext.request.contextpath}/registerservlet -->
  <form action="${pagecontext.request.contextpath }/registerservlet" method="post" enctype="multipart/form-data">
  姓名:<input type="text" name="name" /><br>
  <hr>
  年龄:<input type="text" name="age" /><br>
    <hr>
  照片 :<input type="file" name="photo"/>
  <br>
    <hr>
   <input type="submit" value="注册">
     <hr>
  </form>
</body>
</html>

二、servlet处理

package com.ui.servlet;
 
import java.io.file;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import java.util.list;
 
import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
 
import org.apache.commons.fileupload.fileitem;
import org.apache.commons.fileupload.disk.diskfileitemfactory;
import org.apache.commons.fileupload.servlet.servletfileupload;
import org.apache.tomcat.jni.os;
 
import com.mysql.jdbc.field;
 
/**
 * servlet implementation class registerservlet
 */
@webservlet("/registerservlet")
public class registerservlet extends httpservlet {
    private static final long serialversionuid = 1l;
 
    /**
     * @see httpservlet#dopost(httpservletrequest request, httpservletresponse response)
     */
    protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        // todo auto-generated method stub
        if(!servletfileupload.ismultipartcontent(request))
        {
            throw new runtimeexception("当前不支持文件上传");
        }
        try {
            diskfileitemfactory factory=new diskfileitemfactory();
            
            //设置使用临时文件的边界值,大鱼该值得文件上传会先保存在临时文件中,否则上传文件会直接写入到内存当中去
            //单位 字节 在这里设置的为1m
            factory.setsizethreshold(1024*1024*1);
            //设置临时文件
            string temppath=this.getservletcontext().getrealpath("/temp");
            file file2=new file(temppath);
            factory.setrepository(file2);
            //创建文件上传核心组件
            servletfileupload fileupload=new servletfileupload(factory);
            //设置单个文件的大小不超过多少
            fileupload.setfilesizemax(1024*1024*2);
            //上传多个文件的要求总的大小不超过多少
            fileupload.setsizemax(1024*1024*5);
            fileupload.setheaderencoding("utf-8");
            //设置每一个item的字符编码为utf-8
            
            list<fileitem> items=fileupload.parserequest(request);
            for (fileitem fileitem : items) {
                 if(fileitem.isformfield())
                 {
                     string filename=fileitem.getfieldname();
                     string filevalue=fileitem.getstring("utf-8");
                     system.out.println(filename+"----"+filevalue);
                     
                 }
                 else //如果是文件上传表单项
                 {
                     string filename=fileitem.getname();
                     inputstream inputstream=fileitem.getinputstream();
                     //获取表单项的输入流
                     string path=this.getservletcontext().getrealpath("/filecontents");
                    file file=new file(path,filename);
                    outputstream outputstream=new fileoutputstream(file);
                    int len=-1;
                    byte[] bs=new byte[1024];
                    while((len=inputstream.read(bs))!=-1)
                            {
                        
                        outputstream.write(bs,0,len);
                        
                        
                            }
                    outputstream.close();
                    inputstream.close();
                    //删除临时文件
                    fileitem.delete();
                 }
            }
        }
        catch (exception e) {
            // todo: handle exception
            system.out.println(e);
        }
    }
 
}

三、实现结果

java实现文件的上传功能

java实现文件的上传功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: java 文件上传