简体   繁体   中英

HTTP Status 404 Error when Running Upload File Code

I am getting the error "HTTP Status 404 - Not Found" at the point where I click the Submit button. The path given seems to be correct. Is there anything about this code that would cause that error to occur?

<form name="uploadForm" action="index.jsp" method="POST" enctype="multipart/form-data">
        <%
            String saveFile="";
            String contentType = request.getContentType();

            if((contentType != null)&&(contentType.indexOf("multipart/form-data") >= 0)){

                DataInputStream in = new DataInputStream(request.getInputStream());
                int formDataLength = request.getContentLength();
                byte dataBytes[] = new byte[formDataLength];
                int byteRead = 0;
                int totalBytesRead = 0;

                while(totalBytesRead < formDataLength){
                    byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
                    totalBytesRead += byteRead;
                }

                String file = new String(dataBytes);
                saveFile = file.substring(file.indexOf("filename=\"") + 10);
                saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
                saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
                int lastIndex = contentType.lastIndexOf("=");
                String boundary = contentType.substring(lastIndex + 1,contentType.length());
                int pos;
                pos = file.indexOf("filename=\"");
                pos = file.indexOf("\n", pos) + 1;
                pos = file.indexOf("\n", pos) + 1;
                pos = file.indexOf("\n", pos) + 1;
                int boundaryLocation = file.indexOf(boundary, pos) - 4;
                int startPos = ((file.substring(0, pos)).getBytes()).length;
                int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

                File ff = new File("C:/Users/JBG/Desktop/SampleFile2.docx"+saveFile);

                try{
                    FileOutputStream fileOut = new FileOutputStream(ff);
                    fileOut.write(dataBytes, startPos, (endPos - startPos));
                    fileOut.flush();
                    fileOut.close();}catch(Exception e){out.println(e);}
            }
        %>

        <input type="file" name="file" value="" />
        <input type="submit" value="Submit" name="submit" />
    </form>

As you are getting 404 error message. This error message indicate that

The 404 or Not Found error message is a HTTP standard response code indicating that the client was able to communicate with a given server, but the server could not find what was requested.

The web site hosting server will typically generate a "404 Not Found" web page when a user attempts to follow a broken or dead link; hence the 404 error is one of the most recognizable errors users can find on the web.[1]

So there is a little mistake while file operations correct below line.

in your code

File ff = new File("C:/Users/JBG/Desktop/SampleFile2.docx"+saveFile);

Replace below syntax.

File ff = new File("C:/Users/JBG/Desktop/directory_name/"+saveFile);

OR

File ff = new File("C:/Users/JBG/Desktop/"+saveFile);

You action tag should point to a valid endpoint servlet /webservice . It looks like you are pointing it to a jsp file. That said, mixing presentation logic and server side logic was done in the early 2000s. Things have improved a lot over the past decade. My recommendation would be to look at Jersey + Twitter Bootstrap or even Play for implementing the stuff you are doing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM