서블릿을 처음 사용합니다. 내가 뭘 하려는지 서블릿을 사용하여 내 서버에 파일을 업로드하는 것입니다 나는 서버 측에서 변경하는 파일 이름입니다 하나의 텍스트 값을 보냅니다. 문제는 아약스 게시물을 사용하여 서블릿에 양식 데이터를 제출하는 것이지만 내 서블릿에서는 request.getParameter에서 null 값을 얻게됩니다.서블릿에서 양식 값 가져 오기
이것은 내 html입니다.
$("#fileUp").html( "<form enctype='multipart/form-data' id='uploadForm' action='" + url + "/PrjHRService/FileUpload'>"+
"<input name='file' id='file' type='file' size='50'>"+
"<input name='fname' type='text' >"+
"<input id='btnUpload' value='Upload' type='submit'>"+
//"<div id='imgLink'></div>"+
"</form>");
이것은 내 jquery ajax 서버 호출입니다.
$("#uploadForm").submit(function() {
var formData = new FormData($(this)[0]);
$.ajax({
type: "POST",
url: $("#uploadForm").attr("action"),
data: formData,
async: false,
success: function(data)
{
if(data.res === "true"){
jsi.showMsg("Uploaded Successfully");
$("#imgLink").html("Uploaded Successfully");
}else{
jsi.showMsg("Error Uploading");
}
},
contentType: false,
processData: false
});
return false; // avoid to execute the actual submit of the form.
});
이것은 내 서블릿의 양식에서 값을 얻는 방법입니다. 거기에 줄 문자열 fileExt = request.getParameter ("fname"); 나는 그 fileExt가 내 문제인 null이라는 것을 알았다. 당신이 파일을 업로드 할 경우
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
// Check that we have a file upload request
isMultipart = ServletFileUpload.isMultipartContent(request);
response.setContentType("application/json");
String fileExt=request.getParameter("fname");
java.io.PrintWriter out = response.getWriter();
if(!isMultipart){
JSONObject o=new JSONObject();
try {
o.put("res", "false");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.println(o.toString());
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("c:\\temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax(maxFileSize);
try{
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
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[] parts = fileName.split(".");
//fileName = parts[0] + "." + parts[1];
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// 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) ;
JSONObject o=new JSONObject();
o.put("res", "true");
//out.println("Uploaded Filename: " + fileName + "<br>");
out.println(o.toString());
//out.println("Uploaded Successfully");
}
}
/* out.println("</body>");
out.println("</html>");*/
}catch(Exception ex) {
System.out.println(ex);
}
}
모두 POST입니다. 파일을 업로드 할 수는 있지만 "fname"인 텍스트 입력 값을 가져올 수 없습니다. – ksh
처리하는 서블릿의'doPost' 메소드를 제공 할 수 있습니까? 또한 방금 배치 한 문서에 대한 링크를 확인하십시오. – Cromax
방금 doPost 메서드를 추가했습니다. 감사. – ksh