在java中保存多个附件

时间:2014-09-15 06:17:00

标签: java struts2 attachment

我一直致力于将单个文件保存到数据库(postgresql)中,并且工作正常。但是当我尝试上传多个文件时,我感到困惑。

我的jsp fileupload:

<input type="file" id="reqFile" name="attachments.myFile" multiple/>

这是我的行动方法:

    public String SaveAttachments() throws SQLException, IOException {
    int case_id = (Integer) session.get("case_id");
    System.out.println("in save attachments()");
    int uploaded_by = 1;
    try {
        File destFile = new File(attachments.getMyFileFileName());
        FileUtils.copyFile(attachments.getMyFile(), destFile);
        fis = new FileInputStream(destFile);
        currentCon = ConnectionManager.getConnection();
        pstmt = (PreparedStatement) currentCon.prepareStatement("insert into case_attachments(case_id, attachment, attachment_title, upload_date, uploaded_by) values(?,?,?,current_date,?)");
        pstmt.setInt(1, case_id);
        pstmt.setBinaryStream(2, fis, (int) destFile.length());
        pstmt.setString(3, attachments.getMyFileFileName());
        pstmt.setInt(4, uploaded_by);
        pstmt.executeUpdate();
    } catch (Exception e) {
        System.out.println("Error From SaveAttachments :" + e);
    }
    return SUCCESS;
}

当我附加多个文件时,它以逗号分隔格式进入数据库中的同一列。当用户附加多个文件时,如何在不同的行中保存文件? 在此先感谢。

2 个答案:

答案 0 :(得分:1)

您可以上传多个files like described here,然后您只需循环它们并将它们一次插入数据库中。

您只需要决定是使用业务层还是直接从Action(不是最佳实践......)执行插入作业,以及将所有文件放在单个事务中还是将每个文件放在自己的事务中。 / p>

请记住,HTML5 多个属性应该是multiple="multiple",而不仅仅是multiple(尽管大多数浏览器即使在&#34; quirk&#34; )。

答案 1 :(得分:0)

使用数组进行多次上传。

<td><input type="file" name="file[]" class="multi" id="reqFile"></td>