java - java(jsp、servlet、mysql)中图像保存、编辑、删除到特定文件夹并将路径和其他数据保存在数据库中

标签 java mysql spring jsp servlets

我想从jsp页面获取图像,将其保存在服务器容器之外的特定文件夹中,并将图像路径和其他详细信息(即名称、路径等)存储在mysql数据库中,之后用户需要能够更新图像(删除、添加更多图像等)。 现在我可以将图像存储在数据库中的特定文件夹和路径以及其他详细信息中,现在我陷入了如何根据从 sql 数据库获取的路径将实际图像从文件夹获取到 jsp 页面的问题。 有任何例子可以帮助我解决这一问题。 代码:

private static final long serialVersionUID = 1L;
public BasicInfoFrmDao dao;
int page = 1;
int recordsPerPage = 5;
public static final String MUNCIPAL_COUNCIL_FORM = "/mc-basic-form-list.jsp";

public BasicFormImageController() {
    dao = new BasicInfoFrmDaoImplementation();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    HttpSession session = request.getSession(false);
    String sessionUserName = (String) session.getAttribute("username");
    int sessionUserId = (Integer) session.getAttribute("user_id");
    System.out.println("session Username = : " + sessionUserName + " & UserId = : " + sessionUserId);

    List<BasicInfoFrm> basicInfoFrms = dao.getAllMuncipalCouncils((page - 1) * recordsPerPage, recordsPerPage,
            sessionUserId);
    for (BasicInfoFrm bc : basicInfoFrms) {
        int i = bc.getMuncipalCouncilId();
        System.out.println("muncipal id : " + i);
    }
    request.setAttribute("mcouncils", basicInfoFrms);
    int noOfRecords = dao.getNoOfRecords();
    int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);
    request.setAttribute("noOfPages", noOfPages);
    request.setAttribute("currentPage", page);
    request.setAttribute("alertMsg", "Your information saved successfully...... Thank You!");
    RequestDispatcher requestDispatcher = request.getRequestDispatcher(MUNCIPAL_COUNCIL_FORM);
    requestDispatcher.forward(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    OrgImage orgImage = new OrgImage();
    int orgId = 0;
    int step = 0;

    ArrayList<String> path = new ArrayList<String>();
    // String orgId = request.getParameter("basicInfoFrmId2");
    // System.out.println("org id = "+orgId);
    // ======================================
    // Uploading multiple images at specific folder and path in DB
    // 07-12-2017....

    ServletFileUpload sf = new ServletFileUpload(new DiskFileItemFactory());
    try {
        List<FileItem> multiFiles = sf.parseRequest(request);
        for (FileItem item : multiFiles) {
            if (item.isFormField()) {
                // Process regular form field (input
                // type="text|radio|checkbox|etc", select, etc).
                String fieldName = item.getFieldName();
                System.out.println("text fieldName" + fieldName);
                String fieldValue = item.getString();
                System.err.println("text fieldValue " + fieldValue);
                // ... (do your job here)
                if (fieldName.equalsIgnoreCase("basicInfoFrmId")) {
                    orgId = Integer.parseInt(fieldValue);
                    step = 4;
                    orgImage.setOrgId(orgId);
                }
            } else {
                // Process form file field (input type="file").
                String fieldName = item.getFieldName();
                System.out.println("fieldName " + fieldName);
                String fileName = FilenameUtils.getName(item.getName());
                System.out.println("fileName " + fileName);

                InputStream fileContent = item.getInputStream();
                System.out.println("fileContent " + fileContent);
                // ... (do your job here)
                try {
                    item.write(new File("/myDemoFileFolder/" + item.getName()));
                    path.add("c:/myDemoFileFolder/" + item.getName());
                    // file.mkdirs();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // file.mkdirs();
                System.out.println("Your file " + item.getName() + " is uploaded successfully...");
            }
            orgImage.setImagePath(path);
            System.out.println("org id = " + orgId);
            System.out.println("step = " + step);

            // send data to server 08-12-2017....
            if (orgId != 0) {
                int lastlyEnteredImgId = dao.addOrgImages(orgImage);
                System.out.println("Lastly entered Basic Information Img Id : " + lastlyEnteredImgId);
            }
        }
    } catch (FileUploadException e) {
        e.printStackTrace();
    }
    // Up to yet.....Uploading multiple images at specific folder
    // and path in DB 07-12-2017....
    // ====================================
    doGet(request, response);
}

最佳答案

我在这里得到了正确的解决方案“http://balusc.omnifaces.org/2007/04/imageservlet.html”。 创建单独的servlet并传入图像路径并在jsp页面中获取图像。

关于java - java(jsp、servlet、mysql)中图像保存、编辑、删除到特定文件夹并将路径和其他数据保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49299780/

相关文章:

java - Spring 2.5 Hibernate 3.5 命名查询

java - volatile 变量 'reads' 是否与正常读取一样快?

java - 节点移动 - JavaFX

java - Spring 在映射 2 个类似的 RequestMapping 路由时遇到问题

php - 图片上传集成到注册页面

没有主键的 MySQL 表(最佳实践)

微软安全公告 ADV190023 的 Spring Ldap 影响(LDAP channel 绑定(bind)和 LDAP 签名)

java - 按住键后做某事并在释放和按下时重复

java - 如何混合使用 Spring Data Repositories 和 Spring Rest Controllers

mysql - 快速获取1000+记录