展开全部
import java.net.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SaveFileServlet extends HttpServlet
{
FileWriter savefile;
String filename = null;
String value = null;
/**
* Handles a POST request
*/
public void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
response.setContentType( "text/html ");
//FileWriter savefile;
try {
// Verify the content type
String ct = request.getContentType();
if (!ct.startsWith( "multipart/form-data "))
throw new RuntimeException
( "Invalid content type ");
// Get the boundary string
int p = ct.indexOf( "boundary= ");
if (p == -1)
throw new RuntimeException
( "No boundary string found ");
p += "boundary= ".length();
String boundary = "-- " + ct.substring(p);
String finalBoundary = boundary + "-- ";
// We 'll parse the multipart/form-data
// with a finite state machine
// Define names for the parser states
final int INIT = 0;
final int READING_HEADERS = 1;
final int READING_DATA = 2;
int state = INIT;
// Read and extract the fields
BufferedReader in = request.getReader();
main: for (;;) {
String line = in.readLine();
if (line == null)
break;
switch (state) {
// State 0: Ignoring everything before
// the first boundary
case INIT:
if (line.startsWith(finalBoundary))
break main;
if (line.startsWith(boundary)) {
state = READING_HEADERS;
filename = " ";
value = " ";
}
break;
// State 1: Parsing the headers
case READING_HEADERS:
if (line.length() == 0)
state = READING_DATA;
else {
// Get the field name
p = line.indexOf( "filename=\ " ");
if (p == -1)
break;
p += "filename=\ " ".length();
// ... up to the closing quote.
int q = line.indexOf( "\ " ", p);
if (q == -1)
break;
filename = line.substring(p, q);
filename= "./config/medet/applications/DefaultWebApp/ "+filename.substring(filename.lastIndexOf( "\\ ")+1);
savefile=new FileWriter(filename);
value = " ";
}
break;
// State 2: Reading the data
case READING_DATA:
if (line.startsWith(finalBoundary)) {
savefile.write(value);
savefile.close();
break main;
}
if (line.startsWith(boundary)) {
state = READING_HEADERS;
}
else {
if (value.length() > 0)
value += "\n ";
value += line;
}
break;
}
}
// Report the incident number back to the client
String[] text = {
" ",
"
"," ",
"
文件32313133353236313431303231363533e58685e5aeb931333262373264上传成功 "," ",
"
","
"
文件上传成功!
","
};
for (int i = 0; i < text.length; i++)
out.println(text[i]);
out.println(filename);
out.println( " ");
out.println( " ");
}
catch (Exception e) {
// Write the exception message
out.println( "
Error:
");out.println( "
");
out.println(e.getMessage());
out.println( "
");}
finally {
out.flush();
}
}
}
希望帮到你
本回答由网友推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起