FileUpload 文件上传

实现文件的上传功能现在有两种方式:

  • FileUpload jar包
  • javax-servlet-api 的 HttpServletRequest接口中的getPart()方法

首先使用第一种:

1.创建项目,引入commons-fileupload jar 和javax.servlet-api

2.创建jsp页面:

3.程序处理:

@WebServlet("/upload")
public class Upload extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //磁盘文件项工厂
        DiskFileItemFactory factory=new DiskFileItemFactory();
        //核心解析对象
        ServletFileUpload servletFileUpload=new ServletFileUpload(factory);
        //解析request请求,返回list
        try {
            List<FileItem> fileItems=servletFileUpload.parseRequest(req);
            //遍历集合
            for (FileItem fileItem : fileItems){
                if (fileItem.isFormField()){
                    String name=fileItem.getFieldName();
                    String value=fileItem.getString("UTF-8");
                    System.out.println(name+"-"+value);
                }
                else{
                    String picName=fileItem.getName();
                    if (picName!=null&&picName.length()!=0){
                        String url=null;
                        String fileName=UploadUtils.getUUID(picName);
                        //获取输入流,图片的内容流?
                        InputStream is=fileItem.getInputStream();
                        //存放图片的路径
                        String path=this.getServletContext().getRealPath("/images");
                        System.out.println(path);
                        //图片的地址
                        url=path+"\\"+fileName;
                        //写入到路径中
                        OutputStream os=new FileOutputStream(url);
                        int len=0;
                        byte[] b=new byte[1024];
                        while((len=is.read(b))!=-1){
                            os.write(b,0,len);
                        }
                        is.close();
                        os.close();
                    }
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }
}

4.异常处理:

程序报错:系统找不到路径

解决办法:在这个路径下新增images文件夹后。图片上传成功。

仅使用javax-servlet -api 包

1.第一,第二步骤同上

2.代码处理:

@WebServlet(value = "/upload")
@MultipartConfig
public class PartDemo extends HttpServlet {

    private HttpServletRequest request;
    private HttpServletResponse response;
    @Override
    public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       this.request=req;
       this.response=resp;
       getFileUpload();
    }

    public void getFileUpload(){
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        System.out.println(username+"-"+password);
        try {
            //接收图片
            Part part=request.getPart("photo");
            //生成文件名
            String fileName=UUID.randomUUID().toString()+ LocalDate.now();
            //项目路径
            String path=request.getServletContext().getRealPath("/images");
            //图片的格式
            String contentDisposition=part.getHeader("content-disposition");
            System.out.println(contentDisposition);
            String suffix=contentDisposition.substring(contentDisposition.lastIndexOf("."),contentDisposition.length()-1);
            //图片的路径
            String url=path+"\\"+fileName+suffix;

            part.write(url);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ServletException e) {
            e.printStackTrace();
        }

    }
}

3.异常处理:

  • 报错没有servlet可以处理数据   ---->创建类的时候忘记继承HttpServlet
  • 空指针异常  ----> 使用这种方式的获取图片的方式 ,需要使用注解@MultipartConfig

4.结果

成功!

原文地址:https://www.cnblogs.com/liu-chen/p/11813836.html

时间: 2024-10-25 05:30:35

FileUpload 文件上传的相关文章

fileupload文件上传

在使用java开发文件上传时,网络上有很多不一样的工具.但是每次如果都需要开发一次,对于使用者来说,这个过程是浪费时间的.所以我们有必要选取其中一个适合自己的文件上传组件,然后对其进一步分装,形成自己的开发工具类.下面我针对自己的工程,对fileupload进行了封装. fileupload是apache的一个组件,要想使用fileupload,需要用到下面两个jar:commons-fileupload-1.3.1.jar,commons-io-1.1.jar(版本不一样,可能相关jar包不一

改变FileUpload文件上传控件的显示方式,确认后上传

一.Aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploadDemo.aspx.cs" Inherits="WebApplication1.FileUploadDemo" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu

简单的FileUpload文件上传

引入jar包:commons-fileupload-1.3.1.jar,commons-io-1.3.2.jar 前台HTML: <form action="./upload" method="post" enctype="multipart/form-data"> <table> <tr> <td><label>用户名:</label></td> <td&

对FileUpload文件上传控件的一些使用方法说明

//可以上传图片,txt文档.doc,wps,还有音频文件,视屏文件等,功能强大啊! //前台代码片,设置上传图片的界面 <div> <asp:Label ID ="lbText" runat ="server" Font-Bold ="true" Font-Size ="20px" Text ="请选择您要上传的照片"> </asp:Label> <br />

SSH框架 FileUpLoad文件上传

文件上传是很常用的一个功能,今天说一下struts2的文件上传,使用的是fileupload组件. 首先要有两个jar包,如下图所示: 如果没有这两个jar包的话上传肯定不会成功的,控制台会报错的. 然后再页面上要有一个上传文件的标签,如下图所示: 不要在意后面的onchange事件,这个是做的一个图片上传,为了能够点击图片直接弹出文件选择框而写的一个函数,顺便提一下吧,具体函数和做法如下图所示: 下面是函数: 这个...下面言归正传,继续说文件上传,页面上的上传文件的标签最重要的就是type=

Bootstrap Fileupload 文件上传

1.在jsp中引入css与js文件, <link href="${ctx}/plugins/fileup/css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>----css <script type="text/javascript" src="${ctx}/plugins/fileup/js/file

改变FileUpload文件上传控件的显示方式,选择文件后自动上传

一.Aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploadDemo.aspx.cs" Inherits="WebApplication1.FileUploadDemo" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu

commons.fileupload 文件上传

编辑jsp页面获取文件 1 <html> 2 <head> 3 <base href="<%=basePath%>"> 4 5 <title>My JSP 'upload.jsp' starting page</title> 6 7 <meta http-equiv="pragma" content="no-cache"> 8 <meta http-equi

SpringMVC(6)文件上传

SpringMVC(6)文件上传 我们做一个上传图片的例子,页面(fileUpload.jsp)功能如下: 上传成功后即时显示上传的图片. upload.jsp: <body> <h3>文件上传</h3> <form action="/testAnnotationMVC_fileUpload/file/fileUpload2.jspx" method="post" enctype="multipart/form-d