当前位置: 代码迷 >> Java Web开发 >> JSP +servlet上传文件,怎么在提交表单后上传文件到服务器,然后把表单其他信息和文件名插入到数据库?小白求帮忙,多谢大家
  详细解决方案

JSP +servlet上传文件,怎么在提交表单后上传文件到服务器,然后把表单其他信息和文件名插入到数据库?小白求帮忙,多谢大家

热度:1164   发布时间:2016-04-13 22:22:50.0
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 ServletExceptionIOException {
        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%。。。
你该结贴了
------解决思路----------------------

一楼正解

看来没有什么其他问题了。是该结贴了!
------解决思路----------------------
在一个表单里写上就行,不过你可以用两个表单然后一起提交
  相关解决方案