JSP +servlet上传文件,怎么在提交表单后上传文件到服务器,然后把表单其他信息和文件名插入到数据库?小白求帮忙,多谢大家
JSP +servlet上传文件,如何在提交表单后上传文件到服务器,然后把表单其他信息和文件名插入到数据库?小白求帮忙,谢谢大家!
1.使用的是fileupload组件
2.现在上传文件已经成功,但是不知道在servlet中如何获取其他表单信息并且插入到数据库
3.代码贴出来(就是想知道在下面的servlet代码中,哪里添加获取表单其他信息和文件名代码,并且插入到数据库中)
package com.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.*;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html; charset=utf-8");
PrintWriter out = res.getWriter();
DiskFileItemFactory factory = new DiskFileItemFactory();
// 允许设置内存中存储数据的门限,单位:字节
factory.setSizeThreshold(4096);
// 如果文件大小大于SizeThreshold,则保存到临时目录
factory.setRepository(new File("D:\\uploadTemporary"));
ServletFileUpload upload = new ServletFileUpload(factory);
// 最大上传文件,单位:字节
upload.setSizeMax(1000000);
try {
List fileItems = upload.parseRequest(req);
Iterator iter = fileItems.iterator();
if (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
String fileName = item.getName();
// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
try {
//取得文件名
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
// 保存上传的文件到指定的目录指定文件名中
item.write(new File("D:\\upload",fileName));
} catch (Exception e) {
out.println(e);
}
}
}
} catch (FileUploadException e) {
out.println(e);
}
res.sendRedirect("/testUP/resShow.jsp");//页面重定向
}
}
------解决思路----------------------
在方法里直接获取表单信息就可以。request.getParameter会用吧,就不多说了
获取之后保存到数据库就可以了
给你个建议,上传文件的这些代码单独写到一个方法里,然后dopost方法调用就可以了,你不感觉啥都写一块很乱么?
在给个建议,结贴0%。。。
你该结贴了
------解决思路----------------------
一楼正解
看来没有什么其他问题了。是该结贴了!
------解决思路----------------------
在一个表单里写上就行,不过你可以用两个表单然后一起提交
1.使用的是fileupload组件
2.现在上传文件已经成功,但是不知道在servlet中如何获取其他表单信息并且插入到数据库
3.代码贴出来(就是想知道在下面的servlet代码中,哪里添加获取表单其他信息和文件名代码,并且插入到数据库中)
package com.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.*;
import java.util.*;
import java.io.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html; charset=utf-8");
PrintWriter out = res.getWriter();
DiskFileItemFactory factory = new DiskFileItemFactory();
// 允许设置内存中存储数据的门限,单位:字节
factory.setSizeThreshold(4096);
// 如果文件大小大于SizeThreshold,则保存到临时目录
factory.setRepository(new File("D:\\uploadTemporary"));
ServletFileUpload upload = new ServletFileUpload(factory);
// 最大上传文件,单位:字节
upload.setSizeMax(1000000);
try {
List fileItems = upload.parseRequest(req);
Iterator iter = fileItems.iterator();
if (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
String fileName = item.getName();
// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
try {
//取得文件名
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
// 保存上传的文件到指定的目录指定文件名中
item.write(new File("D:\\upload",fileName));
} catch (Exception e) {
out.println(e);
}
}
}
} catch (FileUploadException e) {
out.println(e);
}
res.sendRedirect("/testUP/resShow.jsp");//页面重定向
}
}
------解决思路----------------------
在方法里直接获取表单信息就可以。request.getParameter会用吧,就不多说了
获取之后保存到数据库就可以了
给你个建议,上传文件的这些代码单独写到一个方法里,然后dopost方法调用就可以了,你不感觉啥都写一块很乱么?
在给个建议,结贴0%。。。
你该结贴了
------解决思路----------------------
一楼正解
看来没有什么其他问题了。是该结贴了!
------解决思路----------------------
在一个表单里写上就行,不过你可以用两个表单然后一起提交