Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件未正确上载_Java_Html_Jsp_Servlets - Fatal编程技术网

Java 文件未正确上载

Java 文件未正确上载,java,html,jsp,servlets,Java,Html,Jsp,Servlets,在这里我想上传我的文件到我的上传文件夹,但在我的情况下,它不能存储在该文件夹。文件名在控制台中打印,但文件不存储在上载文件夹中。在开发人员工具控制台中,我收到一个名为“加载资源失败”的错误:服务器响应状态为404(未找到) DemoForm.java package controller; import java.io.*; import java.util.* ; import javax.servlet.ServletException; import javax.servl

在这里我想上传我的文件到我的上传文件夹,但在我的情况下,它不能存储在该文件夹。文件名在控制台中打印,但文件不存储在上载文件夹中。在开发人员工具控制台中,我收到一个名为“加载资源失败”的错误:服务器响应状态为404(未找到)

DemoForm.java

    package controller;

import java.io.*;


import java.util.* ;

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;



/**
 * Servlet implementation class DemoForm
 */
@WebServlet("/DemoForm")
@MultipartConfig(
        fileSizeThreshold = 1024 * 1024 * 10, //10MB
        maxFileSize = 1024 * 1024 * 50, //50MB
        maxRequestSize = 1024 * 1024 * 100 //100MB
        )

public class DemoForm extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String UPLOAD_DIR = "upload";



    /**
     * @see HttpServlet#HttpServlet()
     */
    public DemoForm() { 
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("username", request.getParameter("username"));
        request.setAttribute("password", request.getParameter("password"));
        request.setAttribute("sex", request.getParameter("sex"));
        request.setAttribute("favious", Arrays.toString(request.getParameterValues("favious")));
        request.setAttribute("description", request.getParameter("description"));
        request.setAttribute("experience", request.getParameter("experience"));
        request.setAttribute("fileName", uploadFile(request));
        request.getRequestDispatcher("form_result.jsp").forward(request, response);

    }

    private String uploadFile(HttpServletRequest request) {

        String fileName = "";

        try {
            Part filePart = request.getPart("photo");
            fileName = getfileName(filePart);
            String applicationPath = request.getServletContext().getRealPath("");
            String basePath = applicationPath + File.separator + UPLOAD_DIR 
                    + File.separator;
            // creates the save directory if it does not exists
            File fileSaveDir = new File(basePath);
            if (!fileSaveDir.exists()) {
                fileSaveDir.mkdir();
            }
            InputStream inputStream = null;
            OutputStream outputStream = null;
            try {
                File outputFilePath = new File(basePath + fileName);
                inputStream =filePart.getInputStream();
                outputStream = new FileOutputStream(outputFilePath);
                int read = 0;
                final byte[] bytes = new byte[1024];
                while((read = inputStream.read(bytes))!= -1) {
                    outputStream.write(bytes,0,read);
                }
            }catch(Exception ex) {
                ex.printStackTrace();
                fileName="";

            }finally {
                if(outputStream != null) {
                    outputStream.close();
                }
                if(inputStream != null) {
                    inputStream.close();
                }
            }

        }catch(Exception ex){
            fileName = "";
        }
        return fileName;
    }


    private String getfileName(Part part) {
        final String partHeader = part.getHeader("content-disposition");
        System.out.println("*****partHeader:" + partHeader);
        for(String content : part.getHeader("content-disposition").split(";")) {
            if(content.trim().startsWith("fileName")) {
                return content.substring(content.indexOf('=')+ 1).trim()
                        .replace("\"", "");
            }
        }
        return null;
    }



}
Form.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Upload file</title>
</head>
<body>
    <form method="post" action="DemoForm" enctype="multipart/form-data">
        <table border="0" cellpadding="2" cellspacing="2" width="300">
            <tr>
                <td> username:</td>
                <td><input type="text" name="username"/></td>
            </tr>
            <tr>
                <td> Password:</td>
                <td><input type="password" name="password"/></td>
            </tr>

            <tr>
                <td valign="top"> Sex </td>
                <td>
                    <input type="radio" name="sex" value="male" checked="checked"/>Male
                    <br>
                    <input type="radio" name="sex" value="female"/>Female
                </td>
            </tr>
            <tr>
                <td valign="top"> Favious </td>
                <td>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 1<br>
                    <input type="checkbox" name="favious" value="fav2"/>Favios 2<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 3<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 4<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 5<br>
                </td>
            </tr>
            <tr>
                <td valign="top"> Description:</td>
                <td><textarea rows="10" cols="20" name="description"></textarea></td>
            </tr>
            <tr>
                <td>Experiences</td>
                <td>
                    <select name="experience">
                        <option value="1"> 1 year </option>
                        <option value="2"> 2 year </option>
                        <option value="3"> 3 year </option>
                        <option value="4"> 4 year </option>
                    </select>
                </td>
            </tr>

            <tr>
                <td valign="top"> Photo</td>
                <td><input type="file" name="photo "/></td>
            </tr>
            <tr>
                <td>&nbsp</td>
                <td><input type="submit" name="save"/></td>
            </tr>
        </table>
    </form>
</body>
</html>
[<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
        <h3>Account Information</h3>
        <table border="0" cellpadding="2" cellspacing="2" width="300">
            <tr>
                <td>Username</td>
                <td> ${username}</td>
            </tr>

            <tr>
                <td>Password</td>
                <td> ${password}</td>
            </tr>
            <tr>
                <td valign="top">Sex</td>
                <td> ${sex}</td>
            </tr>
            <tr>
                <td valign="top">Favious</td>
                <td> ${favious}</td>
            </tr>
            <tr>
                <td valign="top">Description</td>
                <td> ${description}</td>
            </tr>

            <tr>
                <td>Experience</td>
                <td> ${experience}</td>
            </tr>
            <tr>
                <td valign="top">Photo</td>
                <td><img src="upload/${fileName}"></td>
            </tr>
        </table>
</body>
</html>][1]

上传文件
用户名:
密码:
性
男性

女性 快活的 法维奥斯1号
法维奥斯2号
法维奥斯3号
法维奥斯4号
法维奥斯5号
说明: 经历 一年 2年 三年 4年 照片  
表单_result.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Upload file</title>
</head>
<body>
    <form method="post" action="DemoForm" enctype="multipart/form-data">
        <table border="0" cellpadding="2" cellspacing="2" width="300">
            <tr>
                <td> username:</td>
                <td><input type="text" name="username"/></td>
            </tr>
            <tr>
                <td> Password:</td>
                <td><input type="password" name="password"/></td>
            </tr>

            <tr>
                <td valign="top"> Sex </td>
                <td>
                    <input type="radio" name="sex" value="male" checked="checked"/>Male
                    <br>
                    <input type="radio" name="sex" value="female"/>Female
                </td>
            </tr>
            <tr>
                <td valign="top"> Favious </td>
                <td>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 1<br>
                    <input type="checkbox" name="favious" value="fav2"/>Favios 2<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 3<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 4<br>
                    <input type="checkbox" name="favious" value="fav1"/>Favios 5<br>
                </td>
            </tr>
            <tr>
                <td valign="top"> Description:</td>
                <td><textarea rows="10" cols="20" name="description"></textarea></td>
            </tr>
            <tr>
                <td>Experiences</td>
                <td>
                    <select name="experience">
                        <option value="1"> 1 year </option>
                        <option value="2"> 2 year </option>
                        <option value="3"> 3 year </option>
                        <option value="4"> 4 year </option>
                    </select>
                </td>
            </tr>

            <tr>
                <td valign="top"> Photo</td>
                <td><input type="file" name="photo "/></td>
            </tr>
            <tr>
                <td>&nbsp</td>
                <td><input type="submit" name="save"/></td>
            </tr>
        </table>
    </form>
</body>
</html>
[<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
        <h3>Account Information</h3>
        <table border="0" cellpadding="2" cellspacing="2" width="300">
            <tr>
                <td>Username</td>
                <td> ${username}</td>
            </tr>

            <tr>
                <td>Password</td>
                <td> ${password}</td>
            </tr>
            <tr>
                <td valign="top">Sex</td>
                <td> ${sex}</td>
            </tr>
            <tr>
                <td valign="top">Favious</td>
                <td> ${favious}</td>
            </tr>
            <tr>
                <td valign="top">Description</td>
                <td> ${description}</td>
            </tr>

            <tr>
                <td>Experience</td>
                <td> ${experience}</td>
            </tr>
            <tr>
                <td valign="top">Photo</td>
                <td><img src="upload/${fileName}"></td>
            </tr>
        </table>
</body>
</html>][1]
[
在此处插入标题
帐户信息
用户名
${username}
密码
${password}
性
${sex}
快活的
${favious}
描述
${description}
经验
${experience}
照片
][1]

我认为错误不在文件上传中。您的服务器尚未收到您的请求。只需注释掉所有代码,然后检查doPost是否正常工作?检查您正在点击的URL。

您尝试上载文件的端点无效


错误代码404表示找不到端点。

doPost函数正在工作,因为其他值正在正确地进入表单\u result.jsp页面。首先,我的文件必须上载到上载文件夹目录。现在这是个问题。文件未正确上载。如果文件上载成功,则端点被更正,getRealPath方法返回一个带有尾随斜杠的路径。因此,您可以尝试字符串basePath=applicationPath+UPLOAD\u DIR。另外,我应该提到Part接口有getSubmittedFileName()方法,java.nio.file.Files类有copy static方法。