我一直致力于将单个文件保存到数据库(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;
}
当我附加多个文件时,它以逗号分隔格式进入数据库中的同一列。当用户附加多个文件时,如何在不同的行中保存文件? 在此先感谢。
答案 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>