如何在jsp中使用多部分表單上傳文件。我曾嘗試上傳的文件是越來越上傳,但像文/下拉框的形式等各個領域,其價值不能被讀取在jsp中使用多部分文件上傳文件
0
A
回答
0
更新
下面是與爲什麼沿着一個更好的答案是什麼你想不工作:How to upload files to server using JSP/Servlet?
必須,如果你與如Tomcat 6容器的工作(或任何地方的Servlet 3.0 S其中使用這樣的庫爲Apache Commons FileUpload或com.oreilly.servlet pec不支持)。
0
我確信下面的代碼工作正常,因爲經過很好的測試。
JSP文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="POST" action="UploadServlet" enctype="multipart/form-data" >
File:
<input type="file" name="file" id="file" /> <br/>
Destination:
<input type="text" name="foldername"/>
</br>
<input type="submit" value="Upload" name="upload" id="upload" />
</form>
</body>
</html>
Servlet的文件:
package com.servicehandler;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
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 javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.Part;
/**
* Servlet implementation class UploadServlet
*/
@WebServlet("/UploadServlet")
@MultipartConfig(fileSizeThreshold=1024*1024*2,//2mb
maxFileSize=1024*1024*10,//10mb
maxRequestSize=1024*1024*50)//50mb
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
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
{
response.setContentType("text/html;charset=UTF-8");
String subfoldername=request.getParameter("foldername");
String realpath=getServletContext().getRealPath("/");
uploadFileTolocaldirectory(subfoldername,request);
uploadFileToserverContextRealpath(subfoldername,realpath,request);
uploadFileToapplicationdirectory(subfoldername,request);
}
public static void uploadFileTolocaldirectory(String foldername,HttpServletRequest request) throws IllegalStateException, IOException, ServletException
{
String savePath="C:\\rootdir\\"+File.separator+foldername;
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists())
{
fileSaveDir.mkdirs();
}
Part part =request.getPart("file");
String fileName = extractFileName(part);
part.write(savePath + File.separator + fileName);
}
public static void uploadFileToserverContextRealpath(String foldername,String realpath,HttpServletRequest request) throws IllegalStateException, IOException, ServletException
{
String savepath=realpath+File.separator+foldername;
File fileSaveDir = new File(savepath);
if (!fileSaveDir.exists())
{
fileSaveDir.mkdirs();
}
Part part =request.getPart("file");
String fileName = extractFileName(part);
part.write(savepath + File.separator + fileName);
}
public void uploadFileToapplicationdirectory(String foldername,HttpServletRequest request) throws IllegalStateException, IOException, ServletException
{
String path="D:\\yeldiallproject\\Fileuploadusingservlet\\WebContent";
String savepath=path+File.separator+foldername;
File fileSaveDir = new File(savepath);
if (!fileSaveDir.exists())
{
fileSaveDir.mkdirs();
}
Part part =request.getPart("file");
String fileName = extractFileName(part);
part.write(savepath + File.separator + fileName);
}
private static String extractFileName(Part part) {
String partHeader = part.getHeader("content-disposition");
for (String content : part.getHeader("content-disposition").split(";")) {
if (content.trim().startsWith("filename")) {
String filename = content.substring(content.indexOf('=') + 1).trim().replace("\"", "");
return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
}
}
return null;
}
}
相關問題
- 1. JSP多部分文件上傳
- 2. 在JSP中上傳多個文件
- 3. Ionic中的多部分文件上傳
- 4. Ruby中的多部分文件上傳
- 5. 使用文件上傳在HTML/JSP
- 6. 使用多部分上傳文件到php腳本(文件最終在$ _POST中)
- 7. 多部分後上傳文件
- 8. Spring mvc多部分文件上傳
- 9. 多部分上傳文件servlet
- 10. 多部分實體文件上傳java.lang.ArrayIndexOutOfBoundsException
- 11. 多部分文件上傳方法
- 12. 春季多部分文件上傳
- 13. 使用jsp和servlet上傳文件
- 14. 使用servlets從jsp上傳文件?
- 15. 使用文件上傳jQuery插件在Ajax調用中上傳多個文件
- 16. 文件上傳:如何檢查是否使用多部分文件上傳選擇任何文件
- 17. 在JSP中上傳和保存文件
- 18. 在JSP/Servlet中上傳文件
- 19. JSP上傳文件錯誤
- 20. 文件上傳問題JSP
- 21. 上傳文件jsp和servlets
- 22. JSP上傳文件Java.lang.NullPointer
- 23. JSP AJAX文件上傳
- 24. JSP上傳文件失敗
- 25. JSP Javascript上傳文件
- 26. JSP文件上傳位置
- 27. REST上傳Excel文件:使用多部分邊界拒絕文件的POI庫
- 28. 在Qt5中上傳多部分表單數據中的文件
- 29. 使用JSON對Java多部分文件進行上傳
- 30. 請求使用CSRF失敗的toolbelt多部分上傳文件
存在對上傳按鈕一個條件...其依賴於輸入字段的以相同的形式的值.. .....如果有一個值大於2,那麼只有文件上傳應該被問到......我想在這裏納入ajax ......我會嘗試你提供的解決方案並回復給你。 – anonymous 2011-03-16 04:47:58