Как получить несколько имен файлов в столбцах базы данных одновременно? я пишу код, который загружает несколько файлов - PullRequest
0 голосов
/ 17 апреля 2019

Я использую сервлеты, в которых сервлет загружает несколько файлов в папке одновременно, но он не получает все имена файлов в столбцах базы данных. Может ли кто-нибудь помочь мне в коде, как получить все имена файлов в столбцах одновременно, которыеЗагружено сервлетом

В столбце базы данных есть только одно имя файла, например 20190416070203.192dellxps15.jpg, но я хочу, чтобы в столбцах были загружены несколько имен пользователей, например, 20190416070203.192dellxps15.jpg 20190416070203.199HuaweiMAtebookXpro.jpg31072060jp204141

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String page = request.getParameter("page");
    if (page == null) {
        request.getRequestDispatcher("admin/login.jsp").forward(request, response);
        ;
    } else {
        doPost(request, response);
    }
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String page = request.getParameter("page");



    if (page.equals("add_product")) {

        String appPath = "C:/Users/zaid/eclipse-workspace/Ecommerce-shopping/WebContent/";
        String savePath = appPath + File.separator + SAVE_DIR;

        File fileSaveDir = new File(savePath);
        if (!fileSaveDir.exists()) {
            fileSaveDir.mkdir();
        }
        Part part1 = request.getPart("file");
        String fileName1 = extractFileName(part1);

        final DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSS");
         final Calendar c = Calendar.getInstance();
         c.add(Calendar.MILLISECOND, 1);
         String daformat=df.format(c.getTime());
        for (Part part : request.getParts()) {
            String fileName =extractFileName(part);

            // refines the fileName in case it is an absolute path

            if (fileName != null && !"".equals(fileName)) {

                fileName = new File(fileName).getName();
                part.write(savePath + File.separator +""+daformat+""+fileName);
            }
        }
        request.setAttribute("message", "Upload has been done successfully!");

        String name = request.getParameter("name");
        String price = request.getParameter("price");
        String category = request.getParameter("category");
        String featured = request.getParameter("featured");
        String image = request.getParameter("image");

        Product p = new Product();
        p.setName(name);
        p.setPrice(price);
        p.setCategory(category);
        p.setFeatured(featured);
        p.setImage("img/"+image);

        DB account = new DB();
        try {
            account.addProduct(p);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        JOptionPane.showMessageDialog(null, "Product added Successfully", "Info", JOptionPane.INFORMATION_MESSAGE);
        request.getRequestDispatcher("admin/index.jsp").forward(request, response);
    }
}

private String extractFileName(Part part) {
    String contentDisp = part.getHeader("content-disposition");
    String[] items = contentDisp.split(";");
    for (String s : items) {
        if (s.trim().startsWith("filename")) {
            return s.substring(s.indexOf("=") + 2, s.length() - 1);
        }
    }
    return "";
}

}

//////////////// jsp ////////////////////////////

<div class="signup-header">
    <h2>Add Product</h2>
 </div>

 <form method="post" action="admin" enctype="multipart/form-data" >

 <input type="hidden" name="page" value="add_product" >

 <font color="#F24638"><c:out value="${message }"></c:out></font>

    <div class="signup-group">
        <label>Name</label>
        <input type="text" name="name" placeholder="product name goes here"  required>
    </div>
    <div class="signup-group">
        <label>Price</label>
        <input type="text" name="price" placeholder="product price" required>
    </div>
    <div class="signup-group">
        <label>Category</label>
        <input type="text" name="category" placeholder="product category" required>
    </div>

    <div class="signup-group">
        <label>Featured</label>
        <input type="text" name="featured" placeholder="yes/no" required>
    </div>
    <div class="signup-group">
         <label for="fileupload"> Select an image to upload</label>
        <input type="file" name="file" required multiple><br>
    </div>
    <div class="signup-group">
        <input type="submit" value="Add Product">    
    </div>
 </form>




 <footer style="position: relative;top:60px; left: 0;bottom: 0;width: 100%; height:30%">
    <div class="footer"> &copy; 2018 Copyright:
      Zoats.com
    </div>
</footer>

как получить несколько имен изображений в столбцах одновременно в столбцах базы данных с одинаковым идентификатором пользователя, как при использовании одного запроса в сервлете.user111: 20190416070203.192dellxps15.jpg user111: 20190416070203.199HuaweiMAtebookXpro.jpg user111: 20190416070203.207s10plus.jpg

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Вы можете создать один String list и добавить имена файлов в этот список.и преобразовать этот список строк в comma separated String, сохраняя его в БД

List<String> fileNames = new ArrayList<>();
 for (Part part : request.getParts()) {
            String fileName =extractFileName(part);

            // refines the fileName in case it is an absolute path

            if (fileName != null && !"".equals(fileName)) {

                fileName = new File(fileName).getName();
                part.write(savePath + File.separator +""+daformat+""+fileName);
                fileNAmes.add(fileName);
            }
        }
        request.setAttribute("message", "Upload has been done successfully!");

        String name = request.getParameter("name");
        String price = request.getParameter("price");
        String category = request.getParameter("category");
        String featured = request.getParameter("featured");
        String image = request.getParameter("image");

        Product p = new Product();
        p.setName(name);
        p.setPrice(price);
        p.setCategory(category);
        p.setFeatured(featured);
        p.setImage(StringUtils.join(fileNames , ','));

, импортировать StringUtils из Apache Commons

import org.apache.commons.lang3.StringUtils
0 голосов
/ 19 апреля 2019

Дхрумил Патель, вот мой файл jsp, в котором я получаю изображения, используя jstl.

            <tr>
                <td style="width: 50px;"><c:out value="${row.id }"></c:out></td>
                <td style="width: 100px;"><c:out value="${row.name }"></c:out></td>
                <td style="width: 100px;"><c:out value="${row.price }"></c:out></td>
                <td style="width: 100px;"><c:out value="${row.category}"/></td>
                <td style="width: 100px;"><img src="${row.image}" height="100" width="150" ></td>
                <td style="width: 100px;"><a href="<%= request.getContextPath() %>/admin?page=edit&id=${row.id}" style="color: #6bb1f8;">edit</a> ||
                <a href="<%= request.getContextPath() %>/admin?page=delete&id=${row.id}" style="color:#6bb1f8;">delete</a></td>
            </tr>
        </table>
     </c:forEach>`

и вот код класса БД

public Product fetchProduct(String id) throws SQLException {
    dbConnect();
    String sql = "select * from product where id=?";
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.setString(1, id);
    ResultSet rst = pstmt.executeQuery();
    Product p = new Product();
    while(rst.next()){

        p.setId(rst.getInt("id"));
        p.setName(rst.getString("name"));
        p.setPrice(rst.getString("price"));
        p.setCategory(rst.getString("category"));
        p.setFeatured(rst.getString("featured"));
        p.setImage(rst.getString("image"));
    }
    dbClose();
    return p;
}
0 голосов
/ 17 апреля 2019

Вы должны поместить account.addProduct(p); в цикл for, который повторяет все вложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...