JAVA 表单提交图片,图片名存储到数据库表,图片存储到文件夹
时间: 2023-05-30 07:06:39 浏览: 156
以下是一个简单的 Java 代码示例,用于从表单中提交图片并将其存储到文件夹和数据库表中。在下面的示例中,使用了 Spring MVC 框架和 Apache Commons FileUpload 库。
首先,需要在 HTML 表单中添加一个文件选择器,让用户可以选择要上传的图片。例如:
```
<form method="post" action="/submit-form" enctype="multipart/form-data">
<input type="file" name="image"/>
<input type="submit" value="Submit"/>
</form>
```
接下来,创建一个 Spring MVC 控制器来处理表单提交:
```
@Controller
public class FormController {
@Autowired
private ImageService imageService;
@RequestMapping(value = "/submit-form", method = RequestMethod.POST)
public String submitForm(HttpServletRequest request) throws Exception {
// 判断请求是否包含文件上传
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
throw new IllegalArgumentException("Request is not multipart, please check your form");
}
// 创建一个文件上传处理器
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 解析上传的文件
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField() && item.getName() != null && !item.getName().isEmpty()) {
// 保存图片到文件夹
String filename = UUID.randomUUID().toString() + ".jpg"; // 生成一个随机文件名
File file = new File("/path/to/image/folder/" + filename);
item.write(file);
// 将图片名保存到数据库表
imageService.saveImage(filename);
}
}
return "redirect:/success";
}
}
```
在上面的示例中,使用了 Apache Commons FileUpload 库来解析上传的文件。如果请求不包含文件上传,将会抛出异常。然后,使用 DiskFileItemFactory 和 ServletFileUpload 创建一个文件上传处理器,并解析上传的文件。对于每个文件项,判断是否为文件类型,如果是,保存文件到文件夹,并将文件名保存到数据库表中。
最后,创建一个 ImageService 类来保存图片名到数据库表:
```
@Service
public class ImageService {
@Autowired
private JdbcTemplate jdbcTemplate;
public void saveImage(String filename) {
String sql = "INSERT INTO images (filename) VALUES (?)";
jdbcTemplate.update(sql, filename);
}
}
```
在上面的示例中,使用了 Spring JDBC 来执行 SQL 语句,将图片名保存到数据库表中。
以上就是一个简单的 Java 代码示例,用于从表单中提交图片并将其存储到文件夹和数据库表中。请注意,示例中的代码仅供参考,实际情况可能需要进行适当的修改和调整。