添加在此处输入代码所以我有一个输入表单,希望包含添加多个输入类型的文本和类型文件的功能,并且即时通讯试图获取所有值并将其插入到我的数据库中你们能告诉我我的代码复制数据库中的所有值有什么问题吗
String [] inst=request.getParameterValues("inst");
List<Part> fileParts = request.getParts().stream()
.filter(part -> "picture".equals(part.getName()))
.collect(Collectors.toList()); // Retrieves
<input type="file" name="file" multiple="true">
for (int i=0; i< inst.length; i++ ) {
/* Part filePart2=request.getPart("picture");
InputStream photo2 = null;
photo2=filePart2.getInputStream();*/
try {
// connects to the database
//Get all the parts from request and write it to the file on server
for (Part filePartt : fileParts) {
// String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix.
InputStream fileContent = filePartt.getInputStream();
// ... (do your job here)
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection cnn = DriverManager.getConnection("jdbc:mysql://localhost:3306/digitalrecipe","root","");
PreparedStatement pr = (PreparedStatement) cnn.prepareStatement("insert into instruction (inst,photo,idsubc) values (?,?,?) ");
pr.setString(1, inst[i]);
System.out.println("numero "+i);
if (fileContent != null) {
// fetches input stream of the upload file for the blob column
pr.setBlob(2, fileContent);
}
pr.setInt(3, idsub);
pr.executeUpdate();
}
} catch(Exception e){}
}
您有2个嵌套的for循环。第一个从inst数组开始遍历整个长度,然后为每个插入所有部分。因此,如果inst的长度为3,并且您有3个部分,那么每次外部循环+1时,您都将插入3个部分。如果您知道列表中的顺序正确,则可以执行以下操作: