微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Common FileUpload 实现文件的上传

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

Apache common fileUpload 来实现!本文采用的jsp+servlet 来实现的上传,并将文件存储到服务器端!
<%@ page language="java" contentType="text/html; charset=GB18030"  
    pageEncoding="GB18030"%>  
<!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=GB18030">  
<title>Insert title here</title>  
<script type="text/javascript">  
    //指定允许的上传文件类型  
    var extArray = new Array(".jpg",".png",".jpeg",".gif");  
    var allowFormSubmit=false;  
    //有哪些限制  
    function LimitAttach(form,file){  
        var allowSubmit = false;  
        if (!file){  
            alert("请先选择文件,然后在上传!");  
            return;  
        }  
        while (file.indexOf("\\") != -1){  
            file = file.slice(file.indexOf("\\") + 1);  
        }  
        var ext = file.slice(file.indexOf(".")).toLowerCase();  
        for (var i = 0; i < extArray.length; i++) {  
            if (extArray[i] == ext){  
                allowSubmit = true;  
                break;  
            }  
        }  
        if (allowSubmit){  
            //符合条件, 发给指定的servlet   
            form.submit();  
            form.method="post";  
            form.action="servlet/UploadHandleServlet";  
              
        }else{ //检测上传文件类型  
              
            alert("只能上传以下格式的文件:"+ (extArray.join("")) + "\n请重新选择再上传.");  
        }  
    }  
</script>  
</head>  
<body>  
    <form name="upform"  target="_self" id="uploadForm" enctype="multipart/form-data">  
    <input name="uploadfile" size="40" type="file" >   
    <input name="upload" type="submit" onclick="LimitAttach(this.form,this.form.uploadfile.value)" value="上传"/>  
    </form>  
</body>  
</html> 

     而在servlet 端 的工作过程是1. 创建一个文件的解析对象, 然后对上传文件的大小做一个限制, 获取上传文件, 将文件存储服务器的文件夹中! 下边看一下servlet的代码, servlet的使用要在配置文件中进行配置!具体如何配置 就参见百度! 这里不再介绍!
package com.tgb.test.Servlet;  
  
import java.io.File;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.util.Iterator;  
import java.util.List;  
  
import javax.servlet.servletexception;  
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;  
  
public class UploadHandleServlet extends HttpServlet {  
  
    private File uploadpath;  
    private File tempPath;  
      
    public void doGet(HttpServletRequest request,HttpServletResponse response)  
            throws servletexception,IOException {  
        //1 创建文件解析对象  
        diskFileItemFactory factory = new diskFileItemFactory();  
        factory.setSizeThreshold(4096);  
        factory.setRepository(tempPath);  
  
        ServletFileUpload upload = new ServletFileUpload(factory);  
        upload.setSizeMax(1000000 * 20);  
        try {  
            //获取上传文件   
            List fileItems = upload.parseRequest(request);  
            String itemNo = "";  
            for (Iterator iter = fileItems.iterator(); iter.hasNext();) {  
                FileItem item = (FileItem) iter.next();  
  
                //是普通的表单输入域  
                if(item.isFormField()) {  
                    if ("itemNo".equals(item.getFieldName())) {  
                        itemNo = item.getString();  
                    }  
                }  
                //是否为input="type"输入域  
                if (!item.isFormField()) {  
                    String fileName = item.getName();  
                    long size = item.getSize();  
                    if ((fileName == null || fileName.equals("")) && size == 0) {  
                        continue;  
                    }  
                    //截取字符串 如:C:\WINDOWS\Debug\PASSWD.LOG  
                    fileName = fileName.substring(fileName.lastIndexOf("\\") + 1,fileName.length());  
                    //将文件存入指定的文件  
                    item.write(new File(uploadpath,fileName));  
                }  
            }  
              
            response.sendRedirect(request.getcontextpath() + "/index.jsp?flag='成功!'");  
        } catch (Exception e) {  
            e.printstacktrace();  
        }  
  
    }  
    public void doPost(HttpServletRequest request,IOException {  
        doGet(request,response);  
    }  
    public void init() throws servletexception {  
        //itemmanager= new ItemmanagerImpl();  
        uploadpath = new File(getServletContext().getRealPath("upload"));  
        System.out.println("uploadpath=====" + uploadpath);  
        //如果目录不存在  
        if (!uploadpath.exists()) {  
                //创建目录  
            uploadpath.mkdir();  
        }  
                  
        //临时目录  
        tempPath = new File(getServletContext().getRealPath("temp"));  
        if (!tempPath.exists()) {  
            tempPath.mkdir();  
        }  
    }  
  
}  

  这样一个简单的文件上传功能就完成了。我们还可以同事上传多个文件,如果使用spring mvc ,他还自己封装了更简单的实现方法

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐