美文网首页JAVA-WEB基础
文件上传(妈妈不用再担心了)

文件上传(妈妈不用再担心了)

作者: superNeil | 来源:发表于2020-05-19 09:27 被阅读0次

文件上传

1.文件上传

概念 : 将本地磁盘中的文件 放到 服务器磁盘中 . ( 本地--服务器 )


image-20200519071103563.png

1.Servlet 获取到数据怎么做?

答: 1. 接收请求数据 : 用户名(普通文本) ; 文件(二进制) --** 需要把二进制数据以文件方式保存到磁盘中,再把磁盘路径保存到数据库中 .

1.1 准备 (register.jsp , 写表单)

<body>
${msg}  <!--这里可以先不写 , 后面再写 , 这是为后面给用户提示用的哈-->
<h3 style="color: crimson">文件上传模拟</h3>
<form method="post" action="/register" enctype="multipart/form-data">
    <p>用户名: <input type="text" name="username"></p>
    <p>文件上传: <input type="file" name="headImg"></p>
    <input type="submit" value="提交">
</form>
</body>
注意 :
  1. enctype(编码方式) enctype="multipart/form-data" 否则报下面这个错.

multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。

​ 2.method 用 post . get会限制大小

​ 3.需要file控件

1.2 Servlet3.0 文件上传 (十分简单 , 妈妈再也不用担心我学不会了)

首先 我们先看一样要用到的 API ,不然一会很懵了的 .


image-20200519074738052.png
image-20200519075743190.png
@WebServlet("/register")@MultipartConfig
public class UploadServlet extends HttpServlet {
    //文件上传
    //细节:
    // 1.文件名覆盖问题--UUID来解决
    // 2.文件保存位置问题 servletContext上下文对象来,获取真实路径realPath("/upload")
    // 3.文件类型约束的问题
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码格式
        req.setCharacterEncoding("utf-8");
        //String username = req.getParameter("username");
        //System.out.println("用户名--"+username);
        //----------------------------------------
        //用于获取请求中指定的name文件----------获取指定的文件  headImg
        Part part = req.getPart("headImg");
        //--------------------------指定文件类型----------------------------------------------------------------------
        if(!part.getContentType().startsWith("image/")){
            req.setAttribute("msg","亲,请上传图片哦!");
            req.getRequestDispatcher("/register.jsp").forward(req,resp);
            return;
        }
        //--------------------------------------------------------------------------------------------------
        //获取文件名----------------------------getSubmittedFileName()
        String FileName = part.getSubmittedFileName();
        //System.out.println(FileName);//cookie.jpg
        //--------------------------------------获取  拓展名
        String substring = FileName.substring(FileName.lastIndexOf("."));//.jpg  拓展名   substring 截取
        //--------------------------------------UUID + 拓展名   (唯一的字符串)  作为文件名,
        String fileName=UUID.randomUUID()+substring;
        //获取相对 web 根路径的绝对路径  (*****看看看*****)
        String realPath = getServletContext().getRealPath("/upload");
        part.write(realPath+"/"+fileName);//上传到 ----
    }
记得: 需要给Servlet 贴注解 @MultipartConfig

注意 : @MultipartConfig主要用来指明servlet的请求当中包含文件,文件我们通过以下的方式获取:
Part part = req.getPart("filename");

注意: 无法获取项目下的("/upload")目录 :

原因是idea 工具使用打包web项目(war)的方式来部署,所以位置可能稍有偏差,需要还原web项目的原本目录结构,以及调整部署方式 .

image-20200519091226532.png image-20200519091305182.png image-20200519091413283.png

这样 , 文件上传也就搞定啦!

相关文章

  • 文件上传(妈妈不用再担心了)

    文件上传 1.文件上传 概念 : 将本地磁盘中的文件 放到 服务器磁盘中 . ( 本地--服务器 ) 1.Se...

  • 我到底活成了谁

    妈妈终于不用再担心了 担心他未来对我不好 担心我被骗 担心他的家庭我承担不起的责任 爸爸也不用再和别人说对我没指望...

  • 文件下载(妈妈再也不用担心我了)

    1.文件下载(妈妈再也不用担心了) 其实 , 我们做的这些 , 文件下载的 思路 不就是 : 找到文件的路径 , ...

  • 不用担心了

    今天是上市的日子,持仓里显示了数量,这下是真正放心了。第一次体验配债,成功了。

  • 妈妈再也不用担心我找不到文件了(Everything)

    有时候有些文档和文件到了用的时候,不知道放在哪里了,真叫人头大 今天推荐一款利器,轻松搜索电脑所有文件夹,Ever...

  • 妈妈再也不用担心公鸡了

    小学的时候,我的作文是这样诞生的: 我:妈妈,今天你布置的作文公鸡怎么写呢?妈妈:你可以先描述红它鲜红的鸡冠呀 我...

  • 微信、QQ上的文件备份/编辑推荐这个工具,非常好用!

    腾讯文档支持上传微信/QQ聊天文件,云端免费存储,不用担心过期,还支持在线编辑,便捷分享,推荐大家~ 1. 在qq...

  • 找自己

    要变成一个很厉害的人,不用再担心谁会走谁不来,不用再担心口袋里的钱不够花,不用再担心别人怎么看怎么想。 在这孤独夜...

  • node.js+express 文件上传以及图片上传

    文件上传multer模块官网 html页面 js代码 node层先引入multer模块,设置文件上传目录 再对上传...

  • 朋友送的花花草草

    终于实现了养花自由,不用再担心没地方放,我不用担心老公讲了。 因为搬家,担心家里甲醛多,在老公的鼓励下,除了自己以...

网友评论

    本文标题:文件上传(妈妈不用再担心了)

    本文链接:https://www.haomeiwen.com/subject/radvohtx.html