IDEA Tomcat部署

IDEA Tomcat部署

为什么IDEA启动JavaWeb项目,选好文件上传,会报错

Type 异常报告
消息 C:\My Work Material\idea\final-project\upload\out\artifacts\upload_war_exploded\upload\12312313.txt (系统找不到指定的路径。)
描述 服务器遇到一个意外的情况,阻止它完成请求。
Exception
java.io.FileNotFoundException: C:\My Work Material\idea\final-project\upload\out\artifacts\upload_war_exploded\upload\12312313.txt (系统找不到指定的路径。)
	java.io.FileOutputStream.open0(Native Method)
	java.io.FileOutputStream.open(FileOutputStream.java:270)
	java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	java.io.FileOutputStream.<init>(FileOutputStream.java:101)
	com.imooc.servlet.UploadServlet.doPost(UploadServlet.java:52)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note 主要问题的全部 stack 信息可以在 server logs 里查看
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <h1>文件上传</h1>
  <form action="${pageContext.request.contextPath}/UploadServlet" enctype="multipart/form-data" method="post">
    <input type="text" name="name"></br>
    <input type="file" name="“upload”"></br>
    <input type="submit" value="上传">
  </form>
  </body>
</html>
package com.imooc.servlet;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

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 java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

@WebServlet(urlPatterns = "/UploadServlet")
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.创建磁盘文件项工厂
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        // 2.创建核心解析类
        ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
        // 3.解析请求对象,将请求分成几个部分
        try {
            List<FileItem> fileItem = fileUpload.parseRequest(request);
            // 便利集合,获取每个部分的对象
            for (FileItem fileItem1 : fileItem) {
                // 判断是普通项,还是文件上传项
                if (fileItem1.isFormField()) {
                    // 普通项
                    // 获得普通项的名称
                    String name = fileItem1.getFieldName();
                    // 获得普通项的值
                    String value = fileItem1.getString("utf-8");
                    System.out.println(name + " " + value);
                } else {
                    // 文件上传项
                    // 获得文件项名称
                    String filename = fileItem1.getName();
                    // 获得文件大小
                    long size = fileItem1.getSize();
                    // 获得文件输入流:获得文件具体内容
                    InputStream is = fileItem1.getInputStream();
                    // 将文件写入服务器某个路径
                    // 1.获取upload文件夹的磁盘绝对路径
                    String path = getServletContext().getRealPath("/upload");
                    System.out.println(path);
                    // 2.创建输出流,与输入流进行对接
                    OutputStream os = new FileOutputStream(path + "\\" + filename);
                    // 3.对接
                    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();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小琪 2020-04-27 18:17:25

同学你好,是的,idea的文件不能为空,空文件夹不会被编译。

祝学习愉快~

提问者 mixiaofan 2020-04-27 18:15:35

IDEA默认不输出空文件夹,绝了。随便扔个什么东西进去,保证IDEA能输出这个文件夹,后续上传就能成功了。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师