我想上傳一個excel文件。這個文件將被保存在具有重命名而不是文件名的特定路徑中。該重命名包含名稱,當前系統時間和日期。例如上傳一個new.xsl文件,它將被保存,像這樣new_4/14/2014_1:57。我嘗試了很多,但仍然有問題。我在這裏附上我的摘錄。你能告訴我我犯了什麼錯誤嗎?Servlet可以與HTML表單標籤一起使用,以允許用戶上傳文件到服務器
</head>
<body>
<h1>welcome to excel upload</h1>
<form action ="UploadServlet" method ="post" enctype ="multipart/form-data">
Upload a selected file: <input type="file" name="file" size="50"><br><br>
<input type="submit" value="uploadFile">
<input type="submit" value="cancel">
</form>
</body>
</html>
output:welcome to excel upload
Upload a selected file:
package com.bala;
import java.awt.List;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.Date;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.apache.commons.io.output.*;
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private boolean isMultipart;
private String filePath;
private int maxFileSize = 250 * 1024;
private int maxMemSize = 4 * 1024;
private File file ;
String s1 = " ";
String s2 = " ";
public void init(){
filePath =
getServletContext().getInitParameter("file-upload");
}
public UploadServlet() {}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
isMultipart = ServletFileUpload.isMultipartContent(request);
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
if(!isMultipart){
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(maxMemSize);
factory.setRepository(new File("C:/glassfish3/glassfish/domains/domain1/applications/data"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxFileSize);
try{
// Parse the request to get file items.
java.util.List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
while (i.hasNext())
{
FileItem fi = (FileItem)i.next();
if (!fi.isFormField())
{
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
//* request.setAttribute("UPLOAD_DIRECTORY", file);
// Date date = new Date();
//SimpleDateFormat ft =
//new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
//String s = ft.format(date);
// String filename = "bala";
//String filename1 = s+ "_" + filename;
//String fileName1 = file.getFileName();
// out.println(filename1);
//Rename the file
// File oldfile = new File(s1);
// out.println("old file name.."+oldfile);
// File newfile = new File(s2);
//out.println("new file name..."+newfile);
// if(oldfile.renameTo(newfile)){
//filename = "bala" + file.separator +filename1;
// Write the file
if(fileName.lastIndexOf("\\") >= 0){
file = new File(filePath +
fileName.substring(fileName.lastIndexOf("\\")));
}else{
file = new File(filePath +
fileName.substring(fileName.lastIndexOf("\\")+1)) ;
}
fi.write(file);
out.println("Uploading the file successfully." +"<br>");
out.println("Uploaded Filename: " + fileName+"<br>");
}
}
out.println("</body>");
out.println("</html>");
}catch(Exception ex) {
System.out.println(ex);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException,java.io.IOException {
throw new ServletException("GET method used with " +
getClass().getName()+": POST method required.");
}
}
而你的問題是? – StanislavL