• javaweb实现简单的文件上传


    • JavaWeb实现文件的上传


    实现用户将文件上传到服务里的功能

    文件上传功能解释:

    当用户在前端网页点击文件上传后,用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,

    并通过Part对象获得流,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里


    • 上传工具类的使用

    commons-fileupload-1.2.2.jar

    commons-io-2.1.jar

    相关jar包的下载地址   点击下载

    将jar包放到WEB-INF的lib目录下


    JSP端 用户选择文件并将文件上传

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>文件上传</title>
        </head>
        <body>
            <form action="/webtest/upload" method="post" enctype="multipart/form-data">
                <input type="file" name="uploadFile" /> <br/><br/>
                <input type="submit" value="上传" />
            </form>
        </body>
    </html>

    Servlet端的代码 ,获取上传的文件并保存在服务器的目录下 

    package com.xyf.web6;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.UUID;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
     
    @WebServlet("/upload")
    @MultipartConfig
     
     
    public class UploadServlet extends HttpServlet {
         
       
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("UTF-8");
            Part part = request.getPart("uploadFile");
            String inputName=part.getName();
            InputStream input=part.getInputStream();
            //想要保存的目标文件的目录下
            String tagDir=getServletContext().getRealPath("/upload");
            //避免文件名重复使用uuid来避免,产生一个随机的uuid字符
            String realFileName=UUID.randomUUID().toString();
            OutputStream output=new FileOutputStream(new File(tagDir,realFileName));
            int len=0;
            byte[] buff=new byte[1024*8];
             
            while ((len = input.read(buff)) > -1) {
                output.write(buff, 0, len);
            }
     
            input.close();
            output.close();
            response.setCharacterEncoding("utf-8");
            response.getWriter().print("upload success!!");
         
        }
     
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
     
    }

    启动工程之后



    选择上传的文件点击上传,并在服务器目录下得到上传的文件




    • 注意事项

    1.相关的标注

    @MultipartConfig

    将该标注配置到服务器Servlet上面,否则会忽略掉文件的内容。并且报错,错误信息如下

    严重: Servlet.service() for servlet [com.xyf.web6.UploadServlet] in context with path [/webtest] threw exception
    java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

    2.客户端表单中必须指定method=post,因为上传的文件可能很大,并且指定enctype=multipart/form-data使用上传文件专门的编码方式

    enctype="multipart/form-data"

    客户端还需要使用<input type="file" 选择要上传的文件


    3.如果提示当前目录不存在

    会出现文件不存在的错误,这个时候需要先去判断 ,如果不存在就创建,添加以下代码在servlet里

    String uploadFullPath=tagDir;
           //先创建这个文件
           File file=new File(uploadFullPath);
           File ParentFile=file.getParentFile();
           if(!ParentFile.exists())
           {
               ParentFile.mkdirs();//如果文件夹不存在,就创建文件夹
                
           }


    当然这样的上传方式不是很安全,而且没有对于文件类型过滤等操作,没有对恶意代码进行过滤操作。

    我也是刚接触不久,有错误的地方欢迎大家可以指出,以后会相应的对这方便内容进行补充。


  • 相关阅读:
    [hosts]在hosts中屏蔽一级域名和二级域名的写法
    [oracle]查询一个表中数据的插入时间
    [Windows Doc]微软官方文档
    [PL]如果天空是黑暗的,那就摸黑生存
    [LVM]创建LVM卷
    [powershell]获取FCID&Port
    [oracle]解决ora-01034 oracle not available
    [GoogleBlog]new-approach-to-china
    [时钟]配置日期时间并同步到硬件
    [rhel]安装oracle11g
  • 原文地址:https://www.cnblogs.com/a986771570/p/8592656.html
Copyright © 2020-2023  润新知