一,相关工具
mysql,idea,ssm
二,温馨提示
代码AI生成,不是单独功能,自行甄别关键代码,源码在文章顶部文件,是一个完整ssm基础项目,下面的代码userId全部改成id。
三,效果展示
上传结束会报错,正常,因为结果jsp没写,但数据库已成功接收照片。
四,代码展示
1/8.User,自行G/S/T
public class User {
private Integer id;
private String password;
private String name;
private byte[] avatar;
2/8.SQL,有id和mediumblob
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`password` varchar(100) DEFAULT NULL,
`avatar` mediumblob COMMENT '头像',
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=888889 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
3/8.add.jsp
<form action="${pageContext.request.contextPath}/user/uploadAvatar" method="post" enctype="multipart/form-data">
<input type="file" name="avatarFile" accept="image/*" required>
<input type="hidden" name="userId" value="${userId}"> <!-- 假设你已经有用户的ID -->
<button type="submit">上传头像</button>
</form>
4/8.XXXcontroller
@PostMapping("/uploadAvatar")
public String uploadAvatar(@RequestParam("avatarFile") MultipartFile avatarFile,
@RequestParam("userId") Integer userId,
Model model) {
try {
// 验证文件类型和大小(可选)
if (!avatarFile.isEmpty() && avatarFile.getContentType().startsWith("image/")) {
byte[] avatarBytes = avatarFile.getBytes();
userService.updateAvatar(userId, avatarBytes);
model.addAttribute("message", "头像上传成功!");
} else {
model.addAttribute("message", "请上传一个有效的图片文件!");
}
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("message", "头像上传失败,请重试!");
}
return "uploadResult"; // 跳转到结果页面
}
5/8.UserService
public void updateAvatar(Integer userId, byte[] avatar) {
User user = userMapper.selectByPrimaryKey(userId);
if (user != null) {
user.setAvatar(avatar);
userMapper.updateByPrimaryKeySelective(user);
}
}
6/8.UserMapper
// UserMapper.java
public interface UserMapper {
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User user);
}
7/8.UserMapper.xml
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectByPrimaryKey" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
<update id="updateByPrimaryKeySelective" parameterType="User">
UPDATE user
<set>
<if test="avatar != null">
avatar = #{avatar,jdbcType=BLOB},
</if>
<!-- 其他字段的更新可以在这里添加 -->
</set>
WHERE id = #{id}
</update>
</mapper>
8/8.springmvc.xml
<!-- spring-mvc.xml -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 配置上传文件的属性,如大小限制等 -->
<property name="maxUploadSize" value="5242880"/> <!-- 5MB -->
</bean>